From 1821d79bc2936eb596af1c57d5da3a3271f553ca Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Sun, 18 Jun 2017 22:42:52 +0200 Subject: [PATCH] and now, a correct implementation of this_actor::isMaestro() --- src/s4u/s4u_actor.cpp | 6 ++++-- src/simix/smx_private.h | 5 ++++- 2 files changed, 8 insertions(+), 3 deletions(-) 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; -- 2.20.1