X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/98cff65e9cd63d5efbbb10170dae58ff18ec6747..d185bae25f7b17fd34cdea9b4f038a021b6f526d:/src/kernel/context/ContextUnix.cpp diff --git a/src/kernel/context/ContextUnix.cpp b/src/kernel/context/ContextUnix.cpp index 5a7148d2de..0ee4c14a1c 100644 --- a/src/kernel/context/ContextUnix.cpp +++ b/src/kernel/context/ContextUnix.cpp @@ -81,6 +81,7 @@ public: UContext(std::function code, void_pfn_smxprocess_t cleanup_func, smx_actor_t process); ~UContext() override; + void stop() override; }; class SerialUContext : public UContext { @@ -89,7 +90,6 @@ public: void_pfn_smxprocess_t cleanup_func, smx_actor_t process) : UContext(std::move(code), cleanup_func, process) {} - void stop() override; void suspend() override; void resume(); }; @@ -100,7 +100,6 @@ public: void_pfn_smxprocess_t cleanup_func, smx_actor_t process) : UContext(std::move(code), cleanup_func, process) {} - void stop() override; void suspend() override; void resume(); }; @@ -230,6 +229,11 @@ UContext::~UContext() SIMIX_context_stack_delete(this->stack_); } +void UContext::stop() +{ + Context::stop(); + throw StopRequest(); +} }}} // namespace simgrid::kernel::context static void smx_ctx_sysv_wrapper(int first, ...) @@ -249,8 +253,8 @@ static void smx_ctx_sysv_wrapper(int first, ...) try { (*context)(); - context->stop(); - } catch (simgrid::kernel::context::Context::StopRequest) { + context->Context::stop(); + } catch (simgrid::kernel::context::Context::StopRequest const&) { XBT_DEBUG("Caught a StopRequest"); } context->suspend(); @@ -260,12 +264,6 @@ namespace simgrid { namespace kernel { namespace context { -void SerialUContext::stop() -{ - Context::stop(); - throw StopRequest(); -} - void SerialUContext::suspend() { /* determine the next context */ @@ -293,12 +291,6 @@ void SerialUContext::resume() swapcontext(&static_cast(sysv_maestro_context)->uc_, &this->uc_); } -void ParallelUContext::stop() -{ - UContext::stop(); - throw StopRequest(); -} - /** Run one particular simulated process on the current thread. */ void ParallelUContext::resume() {