+
+ void *fun = NULL;
+ void *arg = NULL;
+ while (surf_timer_resource->extension_public->get(&fun,(void*)&arg)) {
+ DEBUG2("got %p %p", fun, arg);
+ if(fun==MSG_process_create_with_arguments) {
+ process_arg_t args = arg;
+ DEBUG2("Launching %s on %s", args->name, args->host->name);
+ process = MSG_process_create_with_arguments(args->name, args->code,
+ args->data, args->host,
+ args->argc,args->argv);
+ if(args->kill_time > MSG_getClock()) {
+ surf_timer_resource->extension_public->set(args->kill_time,
+ (void*) &MSG_process_kill,
+ (void*) process);
+ }
+ xbt_free(args);
+ }
+ if(fun==MSG_process_kill) {
+ process = arg;
+ DEBUG3("Killing %s(%d) on %s", process->name, process->simdata->PID,
+ process->simdata->host->name);
+ MSG_process_kill(process);
+ }
+ }