X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ef58b79b0d9295257d42207996fd3d91d1d232b7..9189fe94c14ef9e31142d1603a1979ea7e731a0a:/src/msg/deployment.c diff --git a/src/msg/deployment.c b/src/msg/deployment.c index 4f61e3a4f5..520b2b8478 100644 --- a/src/msg/deployment.c +++ b/src/msg/deployment.c @@ -16,7 +16,9 @@ static int parse_argc = -1 ; static char **parse_argv = NULL; static m_process_code_t parse_code = NULL; static m_host_t parse_host = NULL; - +static double start_time = 0.0; +static double kill_time = -1.0; + static void parse_process_init(void) { parse_host = MSG_get_host_by_name(A_process_host); @@ -28,6 +30,8 @@ static void parse_process_init(void) parse_argc++; parse_argv = xbt_realloc(parse_argv, (parse_argc) * sizeof(char *)); parse_argv[(parse_argc) - 1] = xbt_strdup(A_process_function); + surf_parse_get_double(&start_time,A_process_start_time); + surf_parse_get_double(&kill_time,A_process_kill_time); } static void parse_argument(void) @@ -39,8 +43,31 @@ static void parse_argument(void) static void parse_process_finalize(void) { - MSG_process_create_with_arguments(parse_argv[0], parse_code, NULL, parse_host, - parse_argc,parse_argv); + process_arg_t arg = NULL; + m_process_t process = NULL; + if(start_time>MSG_get_clock()) { + arg = xbt_new0(s_process_arg_t,1); + arg->name = parse_argv[0]; + arg->code = parse_code; + arg->data = NULL; + arg->host = parse_host; + arg->argc = parse_argc; + arg->argv = parse_argv; + arg-> kill_time = kill_time; + + surf_timer_resource->extension_public->set(start_time, (void*) &MSG_process_create_with_arguments, + arg); + } + if((start_time<0) || (start_time==MSG_get_clock())) { + process = MSG_process_create_with_arguments(parse_argv[0], parse_code, + NULL, parse_host, + parse_argc,parse_argv); + if(kill_time > MSG_getClock()) { + surf_timer_resource->extension_public->set(kill_time, + (void*) &MSG_process_kill, + (void*) process); + } + } } /** \ingroup msg_easier_life @@ -97,7 +124,7 @@ m_process_code_t MSG_get_registered_function(const char *name) xbt_assert0(msg_global,"MSG_global_init_args has to be called before MSG_get_registered_function."); - xbt_dict_get(msg_global->registered_functions,name,(void **) &code); + code = xbt_dict_get(msg_global->registered_functions,name); return code; } @@ -124,7 +151,7 @@ MSG_error_t MSG_get_arguments(int *argc, char ***argv) return MSG_OK; } -/** \ingroup msg_easier_life +/* \ingroup msg_easier_life * \brief Set the arguments of a process. * * This functions sets the argument number and the arguments table for a @@ -135,8 +162,6 @@ MSG_error_t MSG_get_arguments(int *argc, char ***argv) */ MSG_error_t MSG_set_arguments(m_process_t process,int argc, char *argv[]) { - simdata_process_t simdata = NULL; - xbt_assert0(0,"Deprecated ! Do not use anymore. " "Use MSG_process_create_with_arguments instead.\n");