From: Martin Quinson Date: Sun, 18 Jun 2017 20:42:52 +0000 (+0200) Subject: and now, a correct implementation of this_actor::isMaestro() X-Git-Tag: v3.16~51 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/1821d79bc2936eb596af1c57d5da3a3271f553ca and now, a correct implementation of this_actor::isMaestro() --- diff --git a/src/s4u/s4u_actor.cpp b/src/s4u/s4u_actor.cpp index 7b6e9687ab..ab6f3a1d3f 100644 --- a/src/s4u/s4u_actor.cpp +++ b/src/s4u/s4u_actor.cpp @@ -11,6 +11,8 @@ #include "simgrid/s4u/Mailbox.hpp" #include "src/kernel/context/Context.hpp" +#include "src/simix/smx_private.h" + #include XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_actor, "S4U actors"); @@ -179,8 +181,8 @@ namespace this_actor { */ bool isMaestro() { - smx_context_t self_context = SIMIX_context_self(); - return self_context == nullptr; + smx_actor_t process = SIMIX_process_self(); + return process == nullptr || process == simix_global->maestro_process; } void sleep_for(double duration) diff --git a/src/simix/smx_private.h b/src/simix/smx_private.h index 602dfdfa8a..85d91076b5 100644 --- a/src/simix/smx_private.h +++ b/src/simix/smx_private.h @@ -6,8 +6,9 @@ #ifndef SIMIX_PRIVATE_H #define SIMIX_PRIVATE_H -#include +#include "simgrid/s4u/Actor.hpp" #include "src/kernel/context/Context.hpp" +#include #include @@ -17,6 +18,8 @@ namespace simgrid { namespace simix { class Global { + friend bool simgrid::s4u::this_actor::isMaestro(); + public: smx_context_factory_t context_factory = nullptr; xbt_dynar_t process_to_run = nullptr;