Add the parameter parent_process to SIMIX_process_create.
/* argc */ int,
/* argv */ char**,
/* props */ xbt_dict_t,
- /* auto_restart */ int);
+ /* auto_restart */ int,
+ /* parent_process */ smx_process_t);
/******************************* Networking ***********************************/
void MSG_process_cleanup_from_SIMIX(smx_process_t smx_proc);
void MSG_process_create_from_SIMIX(smx_process_t *process, const char *name,
xbt_main_func_t code, void *data,
- const char *hostname, double kill_time, int argc,
- char **argv, xbt_dict_t properties, int auto_restart);
+ const char *hostname, double kill_time,
+ int argc, char **argv,
+ xbt_dict_t properties, int auto_restart,
+ smx_process_t parent_process);
void MSG_comm_copy_data_from_SIMIX(smx_action_t comm, void* buff, size_t buff_size);
void _MSG_action_init(void);
/* This function creates a MSG process. It has the prototype enforced by SIMIX_function_register_process_create */
void MSG_process_create_from_SIMIX(smx_process_t* process, const char *name,
- xbt_main_func_t code, void *data,
- const char *hostname, double kill_time, int argc, char **argv,
- xbt_dict_t properties, int auto_restart)
+ xbt_main_func_t code, void *data,
+ const char *hostname, double kill_time,
+ int argc, char **argv,
+ xbt_dict_t properties, int auto_restart,
+ smx_process_t parent_process)
{
msg_host_t host = MSG_get_host_by_name(hostname);
msg_process_t p = MSG_process_create_with_environment(name, code, data,
process->argc,
(char**)(process->argv),
current_property_set,
- auto_restart);
+ auto_restart, NULL);
else
simcall_process_create(&process_created, (char*)(process->argv)[0], parse_code, NULL, sg_host_name(host), kill_time, process->argc,
(char**)process->argv, current_property_set,auto_restart);
xbt_assert((host != NULL), "Invalid parameters");
if (surf_resource_get_state(surf_workstation_resource_priv(h))==SURF_RESOURCE_OFF) {
- surf_resource_set_state(surf_workstation_resource_priv(h), SURF_RESOURCE_ON);
+ surf_resource_set_state(surf_workstation_resource_priv(h), SURF_RESOURCE_ON);
unsigned int cpt;
smx_process_arg_t arg;
xbt_dynar_foreach(host->boot_processes,cpt,arg) {
arg->argc,
arg->argv,
arg->properties,
- arg->auto_restart);
- }
- else {
+ arg->auto_restart,
+ NULL);
+ } else {
simcall_process_create(&process,
- arg->argv[0],
- arg->code,
- NULL,
- arg->hostname,
- arg->kill_time,
- arg->argc,
- arg->argv,
- arg->properties,
- arg->auto_restart);
+ arg->argv[0],
+ arg->code,
+ NULL,
+ arg->hostname,
+ arg->kill_time,
+ arg->argc,
+ arg->argv,
+ arg->properties,
+ arg->auto_restart);
}
}
}
arg->argc,
arg->argv,
arg->properties,
- arg->auto_restart);
+ arg->auto_restart,
+ NULL);
} else {
simcall_process_create(&process,
arg->argv[0],
smx_process_t SIMIX_process_create_from_wrapper(smx_process_arg_t args) {
smx_process_t process;
- simix_global->create_process_function(
- &process,
- args->name,
- args->code,
- args->data,
- args->hostname,
- args->kill_time,
- args->argc,
- args->argv,
- args->properties,
- args->auto_restart);
+ simix_global->create_process_function(&process,
+ args->name,
+ args->code,
+ args->data,
+ args->hostname,
+ args->kill_time,
+ args->argc,
+ args->argv,
+ args->properties,
+ args->auto_restart,
+ NULL);
xbt_free(args);
return process;
}
int argc, char **argv,
xbt_dict_t properties,
int auto_restart){
- SIMIX_process_create_with_parent(process, name, code, data, hostname,
- kill_time, argc, argv, properties, auto_restart,
- simcall->issuer);
+ SIMIX_process_create(process, name, code, data, hostname,
+ kill_time, argc, argv, properties, auto_restart,
+ simcall->issuer);
}
/**
* \brief Internal function to create a process.
double kill_time,
int argc, char **argv,
xbt_dict_t properties,
- int auto_restart) {
- SIMIX_process_create_with_parent(process, name, code, data, hostname,
- kill_time, argc, argv, properties, auto_restart, NULL);
-}
-
-void SIMIX_process_create_with_parent(smx_process_t *process,
- const char *name,
- xbt_main_func_t code,
- void *data,
- const char *hostname,
- double kill_time,
- int argc, char **argv,
- xbt_dict_t properties,
- int auto_restart,
- smx_process_t parent_process) {
+ int auto_restart,
+ smx_process_t parent_process)
+{
*process = NULL;
smx_host_t host = SIMIX_host_get_by_name(hostname);
arg.argc,
arg.argv,
arg.properties,
- arg.auto_restart);
- }
- else {
+ arg.auto_restart,
+ NULL);
+ } else {
simcall_process_create(&new_process,
- arg.argv[0],
- arg.code,
- arg.data,
- arg.hostname,
- arg.kill_time,
- arg.argc,
- arg.argv,
- arg.properties,
- arg.auto_restart);
+ arg.argv[0],
+ arg.code,
+ arg.data,
+ arg.hostname,
+ arg.kill_time,
+ arg.argc,
+ arg.argv,
+ arg.properties,
+ arg.auto_restart);
}
return new_process;
double kill_time,
int argc, char **argv,
xbt_dict_t properties,
- int auto_restart);
-void SIMIX_process_create_with_parent(smx_process_t *process,
- const char *name,
- xbt_main_func_t code,
- void *data,
- const char *hostname,
- double kill_time,
- int argc, char **argv,
- xbt_dict_t properties,
- int auto_restart,
- smx_process_t parent_process);
+ int auto_restart,
+ smx_process_t parent_process);
void SIMIX_process_runall(void);
void SIMIX_process_kill(smx_process_t process, smx_process_t issuer);
void SIMIX_process_killall(smx_process_t issuer, int reset_pid);