Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[trace] fix on user link variable declaration
[simgrid.git] / include / simix / context.h
index 0ba2a6c..98512e2 100644 (file)
@@ -11,6 +11,7 @@
 
 #include "xbt/swag.h"
 #include "simix/datatypes.h"
+#include "simgrid_config.h"
 
 SG_BEGIN_DECL()
 /******************************** Context *************************************/
@@ -56,7 +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;
+
+#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 */
@@ -64,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,9 +97,11 @@ smx_context_t smx_ctx_base_self(void);
 void *smx_ctx_base_get_data(smx_context_t context);
 
 /* parallelism */
-void SIMIX_context_set_parallel_threads(int nb_threads);
-int SIMIX_context_get_parallel_threads(void);
-int SIMIX_context_is_parallel(void);
+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()