#include "xbt/swag.h"
#include "simix/datatypes.h"
+#include "simgrid_config.h"
SG_BEGIN_DECL()
/******************************** Context *************************************/
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 */
/* 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;
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()