X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b2fe69328dc3b66ce74894b58f5446514e48d53c..207e186001374b77093f4064a2a25a9c626a989d:/src/kernel/context/Context.cpp diff --git a/src/kernel/context/Context.cpp b/src/kernel/context/Context.cpp index 71046510aa..0aead0c913 100644 --- a/src/kernel/context/Context.cpp +++ b/src/kernel/context/Context.cpp @@ -29,6 +29,7 @@ smx_context_t SIMIX_context_new( namespace simgrid { namespace kernel { namespace context { +static thread_local smx_context_t smx_current_context; ContextFactoryInitializer factory_initializer = nullptr; @@ -36,15 +37,15 @@ ContextFactory::~ContextFactory() = default; Context* ContextFactory::self() { - return SIMIX_context_get_current(); + return smx_current_context; } -void ContextFactory::declare_context(void* context, std::size_t size) +void Context::declare_context(std::size_t size) { #if SIMGRID_HAVE_MC /* Store the address of the stack in heap to compare it apart of heap comparison */ if(MC_is_active()) - MC_ignore_heap(context, size); + MC_ignore_heap(this, size); #endif } @@ -104,3 +105,11 @@ smx_context_t SIMIX_context_self() return nullptr; } +/** + * @brief Sets the current context of this thread. + * @param context the context to set + */ +void SIMIX_context_set_current(smx_context_t context) +{ + simgrid::kernel::context::smx_current_context = context; +}