X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/7f9bfecfa8f78da52f5451934dcd209acfa94787..f9b13d923d31bb0336aeeaab6d5b7ba33812f3f7:/src/kernel/context/ContextRaw.cpp diff --git a/src/kernel/context/ContextRaw.cpp b/src/kernel/context/ContextRaw.cpp index 3b36adaa82..6c3613382d 100644 --- a/src/kernel/context/ContextRaw.cpp +++ b/src/kernel/context/ContextRaw.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2009-2020. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2009-2022. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -6,21 +6,22 @@ #include "ContextRaw.hpp" #include "mc/mc.h" #include "simgrid/Exception.hpp" -#include "src/simix/smx_private.hpp" -XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(simix_context); +XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(ker_context); // Raw context routines -typedef void (*rawctx_entry_point_t)(simgrid::kernel::context::SwappedContext*); +using rawctx_entry_point_t = void (*)(simgrid::kernel::context::SwappedContext*); -typedef void* raw_stack_t; +using raw_stack_t = void*; extern "C" raw_stack_t raw_makecontext(void* malloced_stack, int stack_size, rawctx_entry_point_t entry_point, simgrid::kernel::context::SwappedContext* 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) +#if HAVE_RAW_CONTEXTS + #if SIMGRID_PROCESSOR_x86_64 __asm__ ( #if defined(__APPLE__) @@ -161,7 +162,10 @@ __asm__ ( " retl\n" ); #else +#error HAVE_RAW_CONTEXTS defined, but neither SIMGRID_PROCESSOR_x86_64 nor SIMGRID_PROCESSOR_i686. Please update the code. +#endif +#else /* not HAVE_RAW_CONTEXTS */ /* If you implement raw contexts for other processors, don't forget to update the definition of HAVE_RAW_CONTEXTS in tools/cmake/CompleteInFiles.cmake */ @@ -202,7 +206,7 @@ RawContext::RawContext(std::function&& code, actor::ActorImpl* actor, Sw this->stack_top_ = raw_makecontext(get_stack(), actor->get_stacksize(), smx_ctx_wrapper, this); } else { if (MC_is_active()) - MC_ignore_heap(&stack_top_, sizeof(stack_top_)); + MC_ignore_heap(&stack_top_, sizeof stack_top_); } }