X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/d0f2b4208ca1f01b3557267e6268fefe76bdc332..9161dd12dbb9c069f5e100d30f56bf7b6f1362f5:/src/simix/private.h diff --git a/src/simix/private.h b/src/simix/private.h index 74a851ee63..53f20eb72b 100644 --- a/src/simix/private.h +++ b/src/simix/private.h @@ -34,7 +34,6 @@ typedef struct SIMIX_Global { xbt_swag_t process_to_run; xbt_swag_t process_list; xbt_swag_t process_to_destroy; - smx_process_t current_process; smx_process_t maestro_process; xbt_dict_t registered_functions; smx_creation_func_t create_process_function; @@ -156,7 +155,7 @@ static XBT_INLINE e_smx_state_t SIMIX_action_map_state(e_surf_action_state_t sta typedef smx_context_t(*smx_pfn_context_factory_create_context_t) - (xbt_main_func_t, int, char **, void_pfn_smxprocess_t, smx_process_t); + (xbt_main_func_t, int, char **, void_pfn_smxprocess_t, void* data); typedef int (*smx_pfn_context_factory_finalize_t) (smx_context_factory_t *); typedef void (*smx_pfn_context_free_t) (smx_context_t); @@ -164,10 +163,12 @@ typedef void (*smx_pfn_context_start_t) (smx_context_t); typedef void (*smx_pfn_context_stop_t) (smx_context_t); typedef void (*smx_pfn_context_suspend_t) (smx_context_t context); typedef void (*smx_pfn_context_runall_t) (xbt_swag_t processes); -typedef smx_process_t (*smx_pfn_context_self_t) (void); +typedef smx_context_t (*smx_pfn_context_self_t) (void); +typedef void* (*smx_pfn_context_get_data_t) (smx_context_t context); /* interface of the context factories */ typedef struct s_smx_context_factory { + const char *name; smx_pfn_context_factory_create_context_t create_context; smx_pfn_context_factory_finalize_t finalize; smx_pfn_context_free_t free; @@ -175,7 +176,7 @@ typedef struct s_smx_context_factory { smx_pfn_context_suspend_t suspend; smx_pfn_context_runall_t runall; smx_pfn_context_self_t self; - const char *name; + smx_pfn_context_get_data_t get_data; } s_smx_context_factory_t; @@ -266,9 +267,9 @@ static XBT_INLINE void SIMIX_context_runall(xbt_swag_t processes) } /** - \brief returns the current running process + \brief returns the current running context */ -static XBT_INLINE smx_process_t SIMIX_context_self(void) +static XBT_INLINE smx_context_t SIMIX_context_self(void) { if (simix_global->context_factory == NULL) { return NULL; @@ -277,5 +278,15 @@ static XBT_INLINE smx_process_t SIMIX_context_self(void) return (*(simix_global->context_factory->self))(); } +/** + \brief returns the data associated to a context + \param context The context + \return The data + */ +static XBT_INLINE void* SIMIX_context_get_data(smx_context_t context) +{ + return (*(simix_global->context_factory->get_data))(context); +} + #endif