XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_process, simix,
"Logging specific to SIMIX (process)");
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_process, simix,
"Logging specific to SIMIX (process)");
xbt_swag_remove(process, simix_global->process_list);
xbt_swag_remove(process, SIMIX_host_priv(process->smx_host)->process_list);
xbt_swag_insert(process, simix_global->process_to_destroy);
xbt_swag_remove(process, simix_global->process_list);
xbt_swag_remove(process, SIMIX_host_priv(process->smx_host)->process_list);
xbt_swag_insert(process, simix_global->process_to_destroy);
smx_process_t process = NULL;
while ((process = xbt_swag_extract(simix_global->process_to_destroy))) {
smx_process_t process = NULL;
while ((process = xbt_swag_extract(simix_global->process_to_destroy))) {
if (arg->auto_restart && !SIMIX_host_get_state(arg->smx_host)) {
SIMIX_host_add_auto_restart_process(arg->smx_host,arg->name,arg->code, arg->data,
sg_host_name(arg->smx_host),
if (arg->auto_restart && !SIMIX_host_get_state(arg->smx_host)) {
SIMIX_host_add_auto_restart_process(arg->smx_host,arg->name,arg->code, arg->data,
sg_host_name(arg->smx_host),
arg->argc,arg->argv,arg->properties,
arg->auto_restart);
}
arg->argc,arg->argv,arg->properties,
arg->auto_restart);
}
if (kill_time > SIMIX_get_clock() && simix_global->kill_process_function) {
XBT_DEBUG("Process %s(%s) will be kill at time %f", (*process)->name,
sg_host_name((*process)->smx_host), kill_time);
if (kill_time > SIMIX_get_clock() && simix_global->kill_process_function) {
XBT_DEBUG("Process %s(%s) will be kill at time %f", (*process)->name,
sg_host_name((*process)->smx_host), kill_time);
+ if (!xbt_dynar_member(simix_global->process_to_run, &(process)) && process != SIMIX_process_self()) {
+ XBT_DEBUG("Inserting %s in the to_run list", process->name);
+ xbt_dynar_push_as(simix_global->process_to_run, smx_process_t, process);
+ }
MC_process_clock_add(simcall->issuer, duration);
simcall_process_sleep__set__result(simcall, SIMIX_DONE);
SIMIX_simcall_answer(simcall);
MC_process_clock_add(simcall->issuer, duration);
simcall_process_sleep__set__result(simcall, SIMIX_DONE);
SIMIX_simcall_answer(simcall);
smx_process_t simcall_HANDLER_process_restart(smx_simcall_t simcall, smx_process_t process) {
return SIMIX_process_restart(process, simcall->issuer);
}
smx_process_t simcall_HANDLER_process_restart(smx_simcall_t simcall, smx_process_t process) {
return SIMIX_process_restart(process, simcall->issuer);
}
smx_process_t SIMIX_process_restart(smx_process_t process, smx_process_t issuer) {
XBT_DEBUG("Restarting process %s on %s", process->name, sg_host_name(process->smx_host));
//retrieve the arguments of the old process
smx_process_t SIMIX_process_restart(smx_process_t process, smx_process_t issuer) {
XBT_DEBUG("Restarting process %s on %s", process->name, sg_host_name(process->smx_host));
//retrieve the arguments of the old process