#include "xbt/swag.h"
#include "simix/datatypes.h"
-#include "gras_config.h"
+#include "simgrid_config.h"
SG_BEGIN_DECL()
/******************************** Context *************************************/
extern char* smx_context_factory_name;
extern int smx_context_stack_size;
-#ifdef CONTEXT_THREADS
+#if defined(CONTEXT_THREADS) && !defined(APPLE)
+#define HAVE_THREAD_LOCAL_STORAGE 1
+#endif
+
+#ifdef HAVE_THREAD_LOCAL_STORAGE
extern __thread smx_context_t smx_current_context;
#else
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;
int smx_ctx_base_get_thread_id(void);
/* parallelism */
-void SIMIX_context_set_nthreads(int nb_threads);
-int SIMIX_context_get_nthreads(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()