#include <utility>
#include <functional>
-#include <xbt/log.h>
-#include <xbt/parmap.h>
-#include <xbt/dynar.h>
+#include "src/internal_config.h"
+
+#include "xbt/log.h"
+#include "xbt/parmap.h"
+#include "xbt/dynar.h"
#include "smx_private.h"
#include "smx_private.hpp"
ContextFactory* raw_factory()
{
- XBT_VERB("Using raw contexts. "
- "Because the glibc is just not good enough for us.");
+ XBT_VERB("Using raw contexts. Because the glibc is just not good enough for us.");
return new RawContextFactory();
}
// ***** Loads of static stuff
-#ifdef HAVE_THREAD_CONTEXTS
+#if HAVE_THREAD_CONTEXTS
static xbt_parmap_t raw_parmap;
static simgrid::simix::RawContext** raw_workers_context; /* space to save the worker context in each thread */
static uintptr_t raw_threads_working; /* number of threads that have started their work */
rawctx_entry_point_t entry_point, void* arg);
extern "C" void raw_swapcontext(raw_stack_t* old, raw_stack_t new_context);
-#if PROCESSOR_x86_64
+#if SIMGRID_PROCESSOR_x86_64
__asm__ (
#if defined(__APPLE__)
".text\n"
" pop %rdi\n"
" ret\n"
);
-#elif PROCESSOR_i686
+#elif SIMGRID_PROCESSOR_i686
__asm__ (
#if defined(__APPLE__) || defined(_WIN32)
".text\n"
#endif
raw_context_parallel = SIMIX_context_is_parallel();
if (raw_context_parallel) {
-#ifdef HAVE_THREAD_CONTEXTS
+#if HAVE_THREAD_CONTEXTS
int nthreads = SIMIX_context_get_nthreads();
xbt_os_thread_key_create(&raw_worker_id_key);
// TODO, lazily init
RawContextFactory::~RawContextFactory()
{
-#ifdef HAVE_THREAD_CONTEXTS
+#if HAVE_THREAD_CONTEXTS
if (raw_parmap)
xbt_parmap_destroy(raw_parmap);
xbt_free(raw_workers_context);
void RawContextFactory::run_all_parallel()
{
-#ifdef HAVE_THREAD_CONTEXTS
+#if HAVE_THREAD_CONTEXTS
raw_threads_working = 0;
if (raw_parmap == nullptr)
raw_parmap = xbt_parmap_new(
void RawContext::suspend_parallel()
{
-#ifdef HAVE_THREAD_CONTEXTS
+#if HAVE_THREAD_CONTEXTS
/* determine the next context */
smx_process_t next_work = (smx_process_t) xbt_parmap_next(raw_parmap);
RawContext* next_context = nullptr;
void RawContext::resume_parallel()
{
-#ifdef HAVE_THREAD_CONTEXTS
+#if HAVE_THREAD_CONTEXTS
uintptr_t worker_id = __sync_fetch_and_add(&raw_threads_working, 1);
xbt_os_thread_set_specific(raw_worker_id_key, (void*) worker_id);
RawContext* worker_context = (RawContext*) SIMIX_context_self();