void ActorImpl::kill(ActorImpl* actor)
{
+ xbt_assert(actor != simix_global->maestro_process, "Killing maestro is a rather bad idea");
if (actor->finished_) {
XBT_DEBUG("Ignoring request to kill actor %s@%s that is already dead", actor->get_cname(),
actor->host_->get_cname());
by exceptions and logging events */
const char* SIMIX_process_self_get_name()
{
-
- smx_actor_t process = SIMIX_process_self();
- if (process == nullptr || process == simix_global->maestro_process)
- return "maestro";
-
- return process->get_cname();
+ return SIMIX_is_maestro() ? "maestro" : SIMIX_process_self()->get_cname();
}
/**
#include "src/include/mc/mc.h"
#include "src/kernel/activity/ExecImpl.hpp"
#include "src/mc/mc_replay.hpp"
-#include "src/simix/smx_private.hpp"
#include "src/surf/HostImpl.hpp"
#include <algorithm>
void Actor::kill()
{
kernel::actor::ActorImpl* self = SIMIX_process_self();
- kernel::actor::simcall([this, self] {
- xbt_assert(pimpl_ != simix_global->maestro_process, "Killing maestro is a rather bad idea");
- self->kill(pimpl_);
- });
+ kernel::actor::simcall([this, self] { self->kill(pimpl_); });
}
// ***** Static functions *****
*/
bool is_maestro()
{
- kernel::actor::ActorImpl* self = SIMIX_process_self();
- return self == nullptr || self == simix_global->maestro_process;
+ return SIMIX_is_maestro();
}
void sleep_for(double duration)
#include "simgrid/s4u/Exec.hpp"
#include "simgrid/s4u/VirtualMachine.hpp"
#include "src/plugins/vm/VirtualMachineImpl.hpp"
-#include "src/simix/smx_private.hpp"
#include "src/surf/HostImpl.hpp"
#include <algorithm>
sg_host_t sg_host_self()
{
- simgrid::kernel::actor::ActorImpl* self = SIMIX_process_self();
- return (self == nullptr) ? nullptr : self->get_host();
+ return SIMIX_is_maestro() ? nullptr : SIMIX_process_self()->get_host();
}
/* needs to be public and without simcall for exceptions and logging events */
const char* sg_host_self_get_name()
{
- sg_host_t host = sg_host_self();
- if (host == nullptr || SIMIX_process_self() == simix_global->maestro_process)
- return "";
-
- return host->get_cname();
+ return SIMIX_is_maestro() ? "" : SIMIX_process_self()->get_host()->get_cname();
}
double sg_host_load(sg_host_t host)
int SIMIX_is_maestro()
{
- smx_actor_t self = SIMIX_process_self();
- return simix_global == nullptr /*SimDag*/ || self == nullptr || self == simix_global->maestro_process;
+ if (simix_global == nullptr) // SimDag
+ return true;
+ simgrid::kernel::actor::ActorImpl* self = SIMIX_process_self();
+ return self == nullptr || self == simix_global->maestro_process;
}
namespace simix {
class Global {
- friend XBT_PUBLIC bool simgrid::s4u::this_actor::is_maestro();
-
public:
bool execute_tasks();
/**