X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/dc061ae1d3507d0e3b7d3569553b31cb6709702e..b38d5c15755a98cc7ef99a0a9c4936357dbedce3:/src/simix/private.h?ds=inline diff --git a/src/simix/private.h b/src/simix/private.h index d58d6e5b62..eec2c34c6f 100644 --- a/src/simix/private.h +++ b/src/simix/private.h @@ -1,7 +1,5 @@ -/* $Id$ */ - -/* Copyright (c) 2007 Arnaud Legrand, Bruno Donnassolo. - All rights reserved. */ +/* Copyright (c) 2007, 2008, 2009, 2010. The SimGrid Team. + * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -17,6 +15,7 @@ #include "xbt/config.h" #include "xbt/function_types.h" #include "xbt/ex_interface.h" +#include "instr/private.h" /******************************** Datatypes ***********************************/ @@ -159,6 +158,8 @@ typedef struct s_smx_comm { void *dst_buff; size_t src_buff_size; size_t *dst_buff_size; + char copied; + void *data; /* User data associated to communication */ } s_smx_comm_t; @@ -183,6 +184,10 @@ typedef struct s_smx_action { int refcount; /**< @brief reference counter */ surf_action_t surf_action; /* SURF modeling of computation */ smx_host_t source; +#ifdef HAVE_TRACING + long long int counter; /* simix action unique identifier for instrumentation */ + char *category; /* simix action category for instrumentation */ +#endif } s_smx_action_t; /************************** Configuration support *****************************/ @@ -203,67 +208,16 @@ void __SIMIX_action_display_conditions(smx_action_t action); /******************************** Context *************************************/ -void SIMIX_context_mod_init(void); - -void SIMIX_context_mod_exit(void); - -/* *********************** */ -/* Context type definition */ -/* *********************** */ -/* the following function pointers types describe the interface that all context - concepts must implement */ - -/* each context type must contain this macro at its begining -- OOP in C :/ */ -#define SMX_CTX_BASE_T \ - s_xbt_swag_hookup_t hookup; \ - xbt_main_func_t code; \ - int argc; \ - char **argv; \ - void_f_pvoid_t cleanup_func; \ - void *cleanup_arg; \ - -/* all other context types derive from this structure */ -typedef struct s_smx_context { - SMX_CTX_BASE_T; -} s_smx_context_t; - -/* *********************** */ -/* factory type definition */ -/* *********************** */ - -/* Each context implementation define its own context factory - * A context factory is responsable of the creation and manipulation of the - * execution context of all the simulated processes (and maestro) using the - * selected implementation. - * - * For example, the context switch based on java thread use the - * java implementation of the context and the java factory to build and control - * the contexts depending on this implementation. +/* The following function pointer types describe the interface that any context + factory should implement */ - * The following function pointer types describe the interface that any context - * factory should implement. - */ - -/* function used to create a new context */ -typedef smx_context_t (*smx_pfn_context_factory_create_context_t) +typedef smx_context_t (*smx_pfn_context_factory_create_context_t) (xbt_main_func_t, int, char**, void_f_pvoid_t, void*); - -/* this function finalize the specified context factory */ typedef int (*smx_pfn_context_factory_finalize_t) (smx_context_factory_t*); - -/* function used to destroy the specified context */ typedef void (*smx_pfn_context_free_t) (smx_context_t); - -/* function used to start the specified context */ typedef void (*smx_pfn_context_start_t) (smx_context_t); - -/* function used to stop the current context */ typedef void (*smx_pfn_context_stop_t) (smx_context_t); - -/* function used to suspend the current context */ typedef void (*smx_pfn_context_suspend_t) (smx_context_t context); - -/* function used to resume the current context */ typedef void (*smx_pfn_context_resume_t) (smx_context_t new_context); /* interface of the context factories */ @@ -277,6 +231,11 @@ typedef struct s_smx_context_factory { const char *name; } s_smx_context_factory_t; + +void SIMIX_context_mod_init(void); + +void SIMIX_context_mod_exit(void); + /* Selects a context factory associated with the name specified by the parameter name. * If successful the function returns 0. Otherwise the function returns the error code. */ @@ -292,7 +251,6 @@ void SIMIX_ctx_thread_factory_init(smx_context_factory_t * factory); void SIMIX_ctx_sysv_factory_init(smx_context_factory_t * factory); void SIMIX_ctx_lua_factory_init(smx_context_factory_t * factory); -void SIMIX_ctx_lua_factory_set_state(void *state); void SIMIX_ctx_java_factory_init(smx_context_factory_t * factory);