X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/2513cd9f5055a6a62a7066685e7fca786bcf1966..b171931829c14f0ad84cc15e2bf012560982bf75:/src/simix/BoostContext.cpp diff --git a/src/simix/BoostContext.cpp b/src/simix/BoostContext.cpp index b66da92761..9972e783b7 100644 --- a/src/simix/BoostContext.cpp +++ b/src/simix/BoostContext.cpp @@ -38,7 +38,7 @@ public: void resume(); }; -#ifdef CONTEXT_THREADS +#ifdef HAVE_THREAD_CONTEXTS class BoostParallelContext : public BoostContext { public: BoostParallelContext(std::function code, @@ -55,7 +55,7 @@ public: bool BoostContext::parallel_ = false; xbt_parmap_t BoostContext::parmap_ = nullptr; -unsigned long BoostContext::threads_working_ = 0; +uintptr_t BoostContext::threads_working_ = 0; xbt_os_thread_key_t BoostContext::worker_id_key_; unsigned long BoostContext::process_index_ = 0; BoostContext* BoostContext::maestro_context_ = nullptr; @@ -66,7 +66,7 @@ BoostContextFactory::BoostContextFactory() { BoostContext::parallel_ = SIMIX_context_is_parallel(); if (BoostContext::parallel_) { -#ifndef CONTEXT_THREADS +#ifndef HAVE_THREAD_CONTEXTS xbt_die("No thread support for parallel context execution"); #else int nthreads = SIMIX_context_get_nthreads(); @@ -81,7 +81,7 @@ BoostContextFactory::BoostContextFactory() BoostContextFactory::~BoostContextFactory() { -#ifdef CONTEXT_THREADS +#ifdef HAVE_THREAD_CONTEXTS if (BoostContext::parmap_) { xbt_parmap_destroy(BoostContext::parmap_); BoostContext::parmap_ = nullptr; @@ -95,7 +95,7 @@ smx_context_t BoostContextFactory::create_context(std::function code, { BoostContext* context = nullptr; if (BoostContext::parallel_) -#ifdef CONTEXT_THREADS +#ifdef HAVE_THREAD_CONTEXTS context = this->new_context( std::move(code), cleanup_func, process); #else @@ -109,7 +109,7 @@ smx_context_t BoostContextFactory::create_context(std::function code, void BoostContextFactory::run_all() { -#ifdef CONTEXT_THREADS +#ifdef HAVE_THREAD_CONTEXTS if (BoostContext::parallel_) { BoostContext::threads_working_ = 0; xbt_parmap_apply(BoostContext::parmap_, @@ -161,7 +161,7 @@ BoostContext::BoostContext(std::function code, smx_context_usable_stack_size, smx_ctx_boost_wrapper); } else { - #if HAVE_BOOST_CONTEXT == 1 + #if HAVE_BOOST_CONTEXTS == 1 this->fc_ = new boost::context::fcontext_t(); #endif if (BoostContext::maestro_context_ == nullptr) @@ -171,7 +171,7 @@ BoostContext::BoostContext(std::function code, BoostContext::~BoostContext() { -#if HAVE_BOOST_CONTEXT == 1 +#if HAVE_BOOST_CONTEXTS == 1 if (!this->stack_) delete this->fc_; #endif @@ -185,13 +185,13 @@ BoostContext::~BoostContext() void BoostContext::resume() { SIMIX_context_set_current(this); -#if HAVE_BOOST_CONTEXT == 1 +#if HAVE_BOOST_CONTEXTS == 1 boost::context::jump_fcontext( maestro_context_->fc_, this->fc_, (intptr_t) this); #else boost::context::jump_fcontext( - &boost_maestro_context_->fc_, this->fc_, + &maestro_context_->fc_, this->fc_, (intptr_t) this); #endif } @@ -215,7 +215,7 @@ void BoostSerialContext::suspend() maestro_context_); } SIMIX_context_set_current((smx_context_t) next_context); - #if HAVE_BOOST_CONTEXT == 1 + #if HAVE_BOOST_CONTEXTS == 1 boost::context::jump_fcontext( this->fc_, next_context->fc_, (intptr_t) next_context); #else @@ -232,7 +232,7 @@ void BoostSerialContext::stop() // BoostParallelContext -#ifdef CONTEXT_THREADS +#ifdef HAVE_THREAD_CONTEXTS void BoostParallelContext::suspend() { @@ -245,14 +245,14 @@ void BoostParallelContext::suspend() } else { XBT_DEBUG("No more processes to run"); - unsigned long worker_id = - (unsigned long) xbt_os_thread_get_specific(worker_id_key_); + uintptr_t worker_id = + (uintptr_t) xbt_os_thread_get_specific(worker_id_key_); next_context = static_cast( workers_context_[worker_id]); } SIMIX_context_set_current((smx_context_t) next_context); -#if HAVE_BOOST_CONTEXT == 1 +#if HAVE_BOOST_CONTEXTS == 1 boost::context::jump_fcontext( this->fc_, next_context->fc_, (intptr_t)next_context); #else @@ -269,7 +269,7 @@ void BoostParallelContext::stop() void BoostParallelContext::resume() { - unsigned long worker_id = __sync_fetch_and_add(&threads_working_, 1); + uintptr_t worker_id = __sync_fetch_and_add(&threads_working_, 1); xbt_os_thread_set_specific(worker_id_key_, (void*) worker_id); BoostParallelContext* worker_context = @@ -277,7 +277,7 @@ void BoostParallelContext::resume() workers_context_[worker_id] = worker_context; SIMIX_context_set_current(this); -#if HAVE_BOOST_CONTEXT == 1 +#if HAVE_BOOST_CONTEXTS == 1 boost::context::jump_fcontext( worker_context->fc_, this->fc_, (intptr_t) this); #else