X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/dee60c06c65803e929391a0102697323bda033e4..8e06878d622c1792c5e7d8d2d412241b53004e37:/include/simix/context.h?ds=sidebyside diff --git a/include/simix/context.h b/include/simix/context.h index 6bf251e2a7..98512e234a 100644 --- a/include/simix/context.h +++ b/include/simix/context.h @@ -11,6 +11,7 @@ #include "xbt/swag.h" #include "simix/datatypes.h" +#include "simgrid_config.h" SG_BEGIN_DECL() /******************************** Context *************************************/ @@ -56,8 +57,12 @@ typedef void (*smx_ctx_factory_initializer_t)(smx_context_factory_t*); extern smx_ctx_factory_initializer_t smx_factory_initializer_to_use; extern char* smx_context_factory_name; extern int smx_context_stack_size; -extern int smx_parallel_contexts; + +#ifdef HAVE_THREAD_LOCAL_STORAGE +extern __thread smx_context_t smx_current_context; +#else extern smx_context_t smx_current_context; +#endif /* *********************** */ /* Context type definition */ @@ -65,7 +70,7 @@ extern smx_context_t smx_current_context; /* the following function pointers types describe the interface that all context concepts must implement */ /* each context type derive from this structure, so they must contain this structure - * at their begining -- OOP in C :/ */ + * at their beginning -- OOP in C :/ */ typedef struct s_smx_context { s_xbt_swag_hookup_t hookup; xbt_main_func_t code; @@ -91,6 +96,13 @@ void smx_ctx_base_stop(smx_context_t context); smx_context_t smx_ctx_base_self(void); void *smx_ctx_base_get_data(smx_context_t context); +/* parallelism */ +XBT_INLINE void SIMIX_context_set_nthreads(int nb_threads); +XBT_INLINE int SIMIX_context_get_nthreads(void); +XBT_INLINE int SIMIX_context_is_parallel(void); +XBT_INLINE void SIMIX_context_set_parallel_threshold(int threshold); +XBT_INLINE int SIMIX_context_get_parallel_threshold(void); + SG_END_DECL() #endif /* !_XBT_CONTEXT_H */