From: Arnaud Giersch Date: Wed, 6 Mar 2019 16:37:52 +0000 (+0100) Subject: Use real pointer type for context wrappers. X-Git-Tag: v3_22~158 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/3d2bffb7542628af525b2507d2a5035ead215ff2?hp=038fd3c4a495508204a7b9c2e9745426a0bfadf1 Use real pointer type for context wrappers. --- diff --git a/src/kernel/context/ContextRaw.cpp b/src/kernel/context/ContextRaw.cpp index 2f0165fc4c..5e178afd58 100644 --- a/src/kernel/context/ContextRaw.cpp +++ b/src/kernel/context/ContextRaw.cpp @@ -13,11 +13,11 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(simix_context); // Raw context routines -typedef void (*rawctx_entry_point_t)(void *); +typedef void (*rawctx_entry_point_t)(simgrid::kernel::context::RawContext*); typedef void* raw_stack_t; -extern "C" raw_stack_t raw_makecontext(void* malloced_stack, int stack_size, - rawctx_entry_point_t entry_point, void* arg); +extern "C" raw_stack_t raw_makecontext(void* malloced_stack, int stack_size, rawctx_entry_point_t entry_point, + simgrid::kernel::context::RawContext* arg); extern "C" void raw_swapcontext(raw_stack_t* old, raw_stack_t new_context); // TODO, we should handle FP, MMX and the x87 control-word (for x86 and x86_64) @@ -167,13 +167,15 @@ __asm__ ( /* If you implement raw contexts for other processors, don't forget to update the definition of HAVE_RAW_CONTEXTS in tools/cmake/CompleteInFiles.cmake */ -raw_stack_t raw_makecontext(void* malloced_stack, int stack_size, - rawctx_entry_point_t entry_point, void* arg) { - THROW_UNIMPLEMENTED; +raw_stack_t raw_makecontext(void* malloced_stack, int stack_size, rawctx_entry_point_t entry_point, + simgrid::kernel::context::RawContext* arg) +{ + THROW_UNIMPLEMENTED; } -void raw_swapcontext(raw_stack_t* old, raw_stack_t new_context) { - THROW_UNIMPLEMENTED; +void raw_swapcontext(raw_stack_t* old, raw_stack_t new_context) +{ + THROW_UNIMPLEMENTED; } #endif @@ -204,9 +206,8 @@ RawContext::RawContext(std::function code, smx_actor_t actor, SwappedCon } } -void RawContext::wrapper(void* arg) +void RawContext::wrapper(RawContext* context) { - RawContext* context = static_cast(arg); ASAN_FINISH_SWITCH(nullptr, &context->asan_ctx_->asan_stack_, &context->asan_ctx_->asan_stack_size_); try { (*context)(); diff --git a/src/kernel/context/ContextRaw.hpp b/src/kernel/context/ContextRaw.hpp index 40b74a4b10..2810c17948 100644 --- a/src/kernel/context/ContextRaw.hpp +++ b/src/kernel/context/ContextRaw.hpp @@ -34,7 +34,7 @@ private: /** pointer to top the stack stack */ void* stack_top_ = nullptr; - static void wrapper(void* arg); + static void wrapper(RawContext* context); }; class RawContextFactory : public SwappedContextFactory { diff --git a/src/kernel/context/ContextThread.cpp b/src/kernel/context/ContextThread.cpp index f03413bb1a..17a3df7340 100644 --- a/src/kernel/context/ContextThread.cpp +++ b/src/kernel/context/ContextThread.cpp @@ -80,9 +80,8 @@ ThreadContext::~ThreadContext() } } -void *ThreadContext::wrapper(void *param) +void ThreadContext::wrapper(ThreadContext* context) { - ThreadContext* context = static_cast(param); Context::set_current(context); #ifndef WIN32 @@ -119,7 +118,6 @@ void *ThreadContext::wrapper(void *param) #endif XBT_DEBUG("Terminating"); Context::set_current(nullptr); - return nullptr; } void ThreadContext::release() diff --git a/src/kernel/context/ContextThread.hpp b/src/kernel/context/ContextThread.hpp index 47be1bb773..22e381484c 100644 --- a/src/kernel/context/ContextThread.hpp +++ b/src/kernel/context/ContextThread.hpp @@ -48,7 +48,7 @@ private: virtual void yield_hook() { /* empty placeholder, called before yield(). Used in parallel mode */} virtual void stop_hook() { /* empty placeholder, called at stop(). Used in Java */} - static void* wrapper(void *param); + static void wrapper(ThreadContext* context); }; class XBT_PUBLIC SerialThreadContext : public ThreadContext {