xbt_dynar_free(&process->on_exit);
xbt_free(process->name);
- xbt_free(process);
+ delete process;
}
}
{
smx_process_t maestro = NULL;
/* Create maestro process and intilialize it */
- maestro = xbt_new0(s_smx_process_t, 1);
+ maestro = new simgrid::simix::Process();
maestro->pid = simix_process_maxpid++;
maestro->ppid = -1;
maestro->name = (char*) "";
XBT_RUNNING_CTX_INITIALIZE(maestro->running_ctx);
if (!code) {
- maestro->context = SIMIX_context_new(NULL, 0, nullptr, NULL, maestro);
+ maestro->context = SIMIX_context_new(std::function<void()>(), NULL, maestro);
} else {
if (!simix_global)
xbt_die("simix is not initialized, please call MSG_init first");
args->properties,
args->auto_restart,
NULL);
- xbt_free(args);
+ delete args;
return process;
}
xbt_free(argv);
}
else {
- process = xbt_new0(s_smx_process_t, 1);
+ process = new simgrid::simix::Process();
xbt_assert(((code != NULL) && (host != NULL)), "Invalid parameters");
/* Process data */
XBT_VERB("Create context %s", process->name);
- process->context = SIMIX_context_new(code, argc, argv, simix_global->cleanup_process_function, process);
+ process->context = SIMIX_context_new(
+ simgrid::simix::wrap_main(code, argc, argv),
+ simix_global->cleanup_process_function, process);
process->running_ctx = (xbt_running_ctx_t*) xbt_malloc0(sizeof(xbt_running_ctx_t));
XBT_RUNNING_CTX_INITIALIZE(process->running_ctx);
return nullptr;
}
- smx_process_t process = xbt_new0(s_smx_process_t, 1);
+ smx_process_t process = new simgrid::simix::Process();
/* Process data */
process->pid = simix_process_maxpid++;
process->name = xbt_strdup(name);
} else if (raw != nullptr) {
SIMIX_synchro_stop_waiting(process, &process->simcall);
- SIMIX_synchro_destroy(process->waiting_synchro);
+ delete process->waiting_synchro;
} else if (io != nullptr) {
SIMIX_io_destroy(process->waiting_synchro);