-#include"private.h"
-#include"xbt/sysdep.h"
-#include "xbt/error.h"
-#include "surf/surf_parse.h"
-XBT_LOG_NEW_DEFAULT_SUBCATEGORY(deployment, msg,
- "Logging specific to MSG (environment)");
-
-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);
- xbt_assert1(parse_host, "Unknown host %s",A_process_host);
- parse_code = MSG_get_registered_function(A_process_function);
- xbt_assert1(parse_code, "Unknown function %s",A_process_function);
- parse_argc = 0 ;
- parse_argv = NULL;
- 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)
-{
- parse_argc++;
- parse_argv = xbt_realloc(parse_argv, (parse_argc) * sizeof(char *));
- parse_argv[(parse_argc) - 1] = xbt_strdup(A_argument_value);
-}
-
-static void parse_process_finalize(void)
-{
- 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);
- }
- }
-}