}
}
-/**
- * \brief Creates and runs the maestro process
- */
-void SIMIX_maestro_create(void (*code)(void*), void* data)
+namespace simgrid {
+namespace simix {
+
+void create_maestro(std::function<void()> code)
{
smx_process_t maestro = NULL;
/* Create maestro process and intilialize it */
maestro->pid = simix_process_maxpid++;
maestro->ppid = -1;
maestro->name = (char*) "";
- maestro->data = data;
+ maestro->data = nullptr;
maestro->running_ctx = (xbt_running_ctx_t*) xbt_malloc0(sizeof(xbt_running_ctx_t));
XBT_RUNNING_CTX_INITIALIZE(maestro->running_ctx);
if (!simix_global)
xbt_die("simix is not initialized, please call MSG_init first");
maestro->context =
- simix_global->context_factory->create_maestro(
- std::bind(code, data), maestro);
+ simix_global->context_factory->create_maestro(code, maestro);
}
maestro->simcall.issuer = maestro;
simix_global->maestro_process = maestro;
}
+}
+}
+
+/**
+ * \brief Creates and runs the maestro process
+ */
+void SIMIX_maestro_create(void (*code)(void*), void* data)
+{
+ simgrid::simix::create_maestro(std::bind(code, data));
+}
+
/**
* \brief Stops a process.
*
/* execute the on_exit functions */
SIMIX_process_on_exit_runall(arg);
/* Add the process to the list of process to restart, only if the host is down */
- if (arg->auto_restart && arg->host->is_off()) {
+ if (arg->auto_restart && arg->host->isOff()) {
SIMIX_host_add_auto_restart_process(arg->host,arg->name,arg->code, arg->data,
sg_host_get_name(arg->host),
SIMIX_timer_get_date(arg->kill_timer),
XBT_DEBUG("Start process %s on host '%s'", name, hostname);
- if (host->is_off()) {
+ if (host->isOff()) {
int i;
XBT_WARN("Cannot launch process '%s' on failed host '%s'", name,
hostname);
sg_host_t host = sg_host_by_name(hostname);
XBT_DEBUG("Attach process %s on host '%s'", name, hostname);
- if (host->is_off()) {
+ if (host->isOff()) {
XBT_WARN("Cannot launch process '%s' on failed host '%s'",
name, hostname);
return nullptr;
return self->ppid;
}
-void* SIMIX_process_self_get_data(smx_process_t self)
+void* SIMIX_process_self_get_data()
{
- xbt_assert(self == SIMIX_process_self(), "This is not the current process");
+ smx_process_t self = SIMIX_process_self();
if (!self) {
return NULL;
return SIMIX_process_get_data(self);
}
-void SIMIX_process_self_set_data(smx_process_t self, void *data)
+void SIMIX_process_self_set_data(void *data)
{
- xbt_assert(self == SIMIX_process_self(), "This is not the current process");
+ smx_process_t self = SIMIX_process_self();
SIMIX_process_set_data(self, data);
}
sg_host_t host = process->host;
/* check if the host is active */
- if (host->is_off()) {
+ if (host->isOff()) {
THROWF(host_error, 0, "Host %s failed, you cannot call this function",
sg_host_get_name(host));
}
THROW_IMPOSSIBLE;
break;
}
- if (simcall->issuer->host->is_off()) {
+ if (simcall->issuer->host->isOff()) {
simcall->issuer->context->iwannadie = 1;
}
simcall_process_sleep__set__result(simcall, state);