XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_deployment, simix,
"Logging specific to SIMIX (deployment)");
-static xbt_main_func_t parse_code = NULL;
-static double start_time = 0.0;
-static double kill_time = -1.0;
-
-static int auto_restart = 0;
-
extern int surf_parse_lineno;
-static void parse_process(sg_platf_process_cbarg_t process)
+void sg_platf_new_process(sg_platf_process_cbarg_t process)
{
+ if (!simix_global)
+ xbt_die("Cannot create process without SIMIX.");
+
sg_host_t host = sg_host_by_name(process->host);
if (!host)
THROWF(arg_error, 0, "Host '%s' unknown", process->host);
- parse_code = SIMIX_get_registered_function(process->function);
+ xbt_main_func_t parse_code = SIMIX_get_registered_function(process->function);
xbt_assert(parse_code, "Function '%s' unknown", process->function);
- start_time = process->start_time;
- kill_time = process->kill_time;
- auto_restart = process->on_failure == SURF_PROCESS_ON_FAILURE_DIE ? 0 : 1;
+ double start_time = process->start_time;
+ double kill_time = process->kill_time;
+ int auto_restart = process->on_failure == SURF_PROCESS_ON_FAILURE_DIE ? 0 : 1;
smx_process_arg_t arg = NULL;
smx_process_t process_created = NULL;
arg = xbt_new0(s_smx_process_arg_t, 1);
arg->code = parse_code;
arg->data = NULL;
- arg->hostname = sg_host_name(host);
+ arg->hostname = sg_host_get_name(host);
arg->argc = process->argc;
arg->argv = xbt_new(char *,process->argc);
int i;
arg->name = (char*)(process->argv)[0];
arg->code = parse_code;
arg->data = NULL;
- arg->hostname = sg_host_name(host);
+ arg->hostname = sg_host_get_name(host);
arg->argc = process->argc;
arg->argv = (char**)(process->argv);
arg->kill_time = kill_time;
arg->hostname, start_time);
SIMIX_timer_set(start_time, &SIMIX_process_create_from_wrapper, arg);
} else { // start_time <= SIMIX_get_clock()
- XBT_DEBUG("Starting Process %s(%s) right now", process->argv[0], sg_host_name(host));
+ XBT_DEBUG("Starting Process %s(%s) right now", process->argv[0], sg_host_get_name(host));
if (simix_global->create_process_function)
process_created = simix_global->create_process_function(
(char*)(process->argv)[0],
parse_code,
NULL,
- sg_host_name(host),
+ sg_host_get_name(host),
kill_time,
process->argc,
(char**)(process->argv),
current_property_set,
auto_restart, NULL);
else
- process_created = simcall_process_create((char*)(process->argv)[0], parse_code, NULL, sg_host_name(host), kill_time, process->argc,
+ process_created = simcall_process_create((char*)(process->argv)[0], parse_code, NULL, sg_host_get_name(host), kill_time, process->argc,
(char**)process->argv, current_property_set,auto_restart);
/* verify if process has been created (won't be the case if the host is currently dead, but that's fine) */
current_property_set = NULL;
}
-void SIMIX_init_application(void){
+void SIMIX_init_application(void)
+{
surf_parse_reset_callbacks();
- sg_platf_process_add_cb(parse_process);
}
/**
sg_host_t host = sg_host_by_name(process_host);
if (!host)
THROWF(arg_error, 0, "Host '%s' unknown", process_host);
- process.host = sg_host_name(host);
+ process.host = sg_host_get_name(host);
process.argc = 1 + xbt_dynar_length(arguments);
process.argv = (const char**)xbt_new(char *, process.argc + 1);
}
process.argv[process.argc] = NULL;
- parse_code = SIMIX_get_registered_function(process_function);
+ xbt_main_func_t parse_code = SIMIX_get_registered_function(process_function);
xbt_assert(parse_code, "Function '%s' unknown", process_function);
process.function = process_function;