X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/60087ab28ce5450ad32f128cffbb09eb492eb550..a7dcfcf6d7280ded115ac03b7db6af640fc7a24d:/src/simix/ContextRaw.cpp diff --git a/src/simix/ContextRaw.cpp b/src/simix/ContextRaw.cpp index 67ebc5438c..4a34afa30f 100644 --- a/src/simix/ContextRaw.cpp +++ b/src/simix/ContextRaw.cpp @@ -4,13 +4,6 @@ /* 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. */ -/** \file RawContext.cpp - * Fast context switching inspired from SystemV ucontexts. - * - * In contrast to System V context, it does not touch the signal mask - * which avoids making a system call (at least on Linux). - */ - #include #include @@ -23,7 +16,6 @@ #include "xbt/dynar.h" #include "smx_private.h" -#include "smx_private.hpp" #include "mc/mc.h" XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(simix_context); @@ -36,6 +28,11 @@ namespace simix { class RawContext; class RawContextFactory; +/** @brief Fast context switching inspired from SystemV ucontexts. + * + * The main difference to the System V context is that Raw Contexts are much faster because they don't + * preserve the signal mask when switching. This saves a system call (at least on Linux) on each context switch. + */ class RawContext : public Context { protected: void* stack_ = nullptr; @@ -46,7 +43,7 @@ public: RawContext(std::function code, void_pfn_smxprocess_t cleanup_func, smx_process_t process); - ~RawContext(); + ~RawContext() override; public: static void wrapper(void* arg); void stop() override; @@ -62,9 +59,9 @@ private: class RawContextFactory : public ContextFactory { public: RawContextFactory(); - ~RawContextFactory(); + ~RawContextFactory() override; RawContext* create_context(std::function code, - void_pfn_smxprocess_t, smx_process_t process) override; + void_pfn_smxprocess_t cleanup, smx_process_t process) override; void run_all() override; private: void run_all_adaptative();