Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[simix] Remove the process_create simcall
authorGabriel Corona <gabriel.corona@loria.fr>
Wed, 25 May 2016 08:13:16 +0000 (10:13 +0200)
committerGabriel Corona <gabriel.corona@loria.fr>
Wed, 25 May 2016 08:13:16 +0000 (10:13 +0200)
Use simgrid::simix::kernel() instead.

src/simix/libsmx.cpp
src/simix/popping_accessors.h
src/simix/popping_bodies.cpp
src/simix/popping_enum.h
src/simix/popping_generated.cpp
src/simix/simcalls.in

index 2735d02..115a0e8 100644 (file)
@@ -377,9 +377,14 @@ smx_process_t simcall_process_create(const char *name,
 {
   if (name == nullptr)
     name = "";
 {
   if (name == nullptr)
     name = "";
-  return (smx_process_t) simcall_BODY_process_create(name, code, data, hostname,
-                              kill_time, argc, argv, properties,
-                              auto_restart);
+  auto wrapped_code = simgrid::simix::wrap_main(code, argc, argv);
+  for (int i = 0; i != argc; ++i)
+    xbt_free(argv[i]);
+  xbt_free(argv);
+  smx_process_t res = simcall_process_create(name,
+    std::move(wrapped_code),
+    data, hostname, kill_time, properties, auto_restart);
+  return res;
 }
 
 /**
 }
 
 /**
index f5f1a3f..b5fff63 100644 (file)
@@ -49,67 +49,6 @@ static inline void simcall_vm_restore__set__ind_vm(smx_simcall_t simcall, void*
     simcall->args[0].dp = arg;
 }
 
     simcall->args[0].dp = arg;
 }
 
-static inline const char* simcall_process_create__get__name(smx_simcall_t simcall) {
-  return  simcall->args[0].cc;
-}
-static inline void simcall_process_create__set__name(smx_simcall_t simcall, const char* arg) {
-    simcall->args[0].cc = arg;
-}
-static inline xbt_main_func_t simcall_process_create__get__code(smx_simcall_t simcall) {
-  return (xbt_main_func_t) simcall->args[1].fp;
-}
-static inline void simcall_process_create__set__code(smx_simcall_t simcall, FPtr arg) {
-    simcall->args[1].fp = arg;
-}
-static inline void* simcall_process_create__get__data(smx_simcall_t simcall) {
-  return  simcall->args[2].dp;
-}
-static inline void simcall_process_create__set__data(smx_simcall_t simcall, void* arg) {
-    simcall->args[2].dp = arg;
-}
-static inline const char* simcall_process_create__get__hostname(smx_simcall_t simcall) {
-  return  simcall->args[3].cc;
-}
-static inline void simcall_process_create__set__hostname(smx_simcall_t simcall, const char* arg) {
-    simcall->args[3].cc = arg;
-}
-static inline double simcall_process_create__get__kill_time(smx_simcall_t simcall) {
-  return  simcall->args[4].d;
-}
-static inline void simcall_process_create__set__kill_time(smx_simcall_t simcall, double arg) {
-    simcall->args[4].d = arg;
-}
-static inline int simcall_process_create__get__argc(smx_simcall_t simcall) {
-  return  simcall->args[5].i;
-}
-static inline void simcall_process_create__set__argc(smx_simcall_t simcall, int arg) {
-    simcall->args[5].i = arg;
-}
-static inline char** simcall_process_create__get__argv(smx_simcall_t simcall) {
-  return (char**) simcall->args[6].dp;
-}
-static inline void simcall_process_create__set__argv(smx_simcall_t simcall, void* arg) {
-    simcall->args[6].dp = arg;
-}
-static inline xbt_dict_t simcall_process_create__get__properties(smx_simcall_t simcall) {
-  return (xbt_dict_t) simcall->args[7].dp;
-}
-static inline void simcall_process_create__set__properties(smx_simcall_t simcall, void* arg) {
-    simcall->args[7].dp = arg;
-}
-static inline int simcall_process_create__get__auto_restart(smx_simcall_t simcall) {
-  return  simcall->args[8].i;
-}
-static inline void simcall_process_create__set__auto_restart(smx_simcall_t simcall, int arg) {
-    simcall->args[8].i = arg;
-}
-static inline void* simcall_process_create__get__result(smx_simcall_t simcall){
-    return  simcall->result.dp;
-}
-static inline void simcall_process_create__set__result(smx_simcall_t simcall, void* result){
-    simcall->result.dp = result;
-}
-
 static inline smx_process_t simcall_process_kill__get__process(smx_simcall_t simcall) {
   return (smx_process_t) simcall->args[0].dp;
 }
 static inline smx_process_t simcall_process_kill__get__process(smx_simcall_t simcall) {
   return (smx_process_t) simcall->args[0].dp;
 }
@@ -1218,7 +1157,6 @@ XBT_PRIVATE void simcall_HANDLER_vm_resume(smx_simcall_t simcall, sg_host_t ind_
 XBT_PRIVATE void simcall_HANDLER_vm_shutdown(smx_simcall_t simcall, sg_host_t ind_vm);
 XBT_PRIVATE void simcall_HANDLER_vm_save(smx_simcall_t simcall, sg_host_t ind_vm);
 XBT_PRIVATE void simcall_HANDLER_vm_restore(smx_simcall_t simcall, sg_host_t ind_vm);
 XBT_PRIVATE void simcall_HANDLER_vm_shutdown(smx_simcall_t simcall, sg_host_t ind_vm);
 XBT_PRIVATE void simcall_HANDLER_vm_save(smx_simcall_t simcall, sg_host_t ind_vm);
 XBT_PRIVATE void simcall_HANDLER_vm_restore(smx_simcall_t simcall, sg_host_t ind_vm);
-XBT_PRIVATE void* simcall_HANDLER_process_create(smx_simcall_t simcall, 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_PRIVATE void simcall_HANDLER_process_kill(smx_simcall_t simcall, smx_process_t process);
 XBT_PRIVATE void simcall_HANDLER_process_killall(smx_simcall_t simcall, int reset_pid);
 XBT_PRIVATE void simcall_HANDLER_process_suspend(smx_simcall_t simcall, smx_process_t process);
 XBT_PRIVATE void simcall_HANDLER_process_kill(smx_simcall_t simcall, smx_process_t process);
 XBT_PRIVATE void simcall_HANDLER_process_killall(smx_simcall_t simcall, int reset_pid);
 XBT_PRIVATE void simcall_HANDLER_process_suspend(smx_simcall_t simcall, smx_process_t process);
index 8f88cb1..9494181 100644 (file)
@@ -124,35 +124,6 @@ inline static void simcall_BODY_vm_restore(sg_host_t ind_vm) {
     
   }
   
     
   }
   
-inline static void* simcall_BODY_process_create(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 self = SIMIX_process_self();
-
-    /* Go to that function to follow the code flow through the simcall barrier */
-    if (0) simcall_HANDLER_process_create(&self->simcall, name, code, data, hostname, kill_time, argc, argv, properties, auto_restart);
-    /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
-
-    self->simcall.call = SIMCALL_PROCESS_CREATE;
-    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
-    memset(self->simcall.args, 0, sizeof(self->simcall.args));
-    self->simcall.args[0].cc = (const char*) name;
-    self->simcall.args[1].fp = (FPtr) code;
-    self->simcall.args[2].dp = (void*) data;
-    self->simcall.args[3].cc = (const char*) hostname;
-    self->simcall.args[4].d = (double) kill_time;
-    self->simcall.args[5].i = (int) argc;
-    self->simcall.args[6].dp = (void*) argv;
-    self->simcall.args[7].dp = (void*) properties;
-    self->simcall.args[8].i = (int) auto_restart;
-    if (self != simix_global->maestro_process) {
-      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name.c_str(),
-                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
-      SIMIX_process_yield(self);
-    } else {
-      SIMIX_simcall_handle(&self->simcall, 0);
-    }    
-    return (void*) self->simcall.result.dp;
-  }
-  
 inline static void simcall_BODY_process_kill(smx_process_t process) {
     smx_process_t self = SIMIX_process_self();
 
 inline static void simcall_BODY_process_kill(smx_process_t process) {
     smx_process_t self = SIMIX_process_self();
 
index 5185e8e..f7590f8 100644 (file)
@@ -23,7 +23,6 @@ typedef enum {
   SIMCALL_VM_SHUTDOWN,
   SIMCALL_VM_SAVE,
   SIMCALL_VM_RESTORE,
   SIMCALL_VM_SHUTDOWN,
   SIMCALL_VM_SAVE,
   SIMCALL_VM_RESTORE,
-  SIMCALL_PROCESS_CREATE,
   SIMCALL_PROCESS_KILL,
   SIMCALL_PROCESS_KILLALL,
   SIMCALL_PROCESS_CLEANUP,
   SIMCALL_PROCESS_KILL,
   SIMCALL_PROCESS_KILLALL,
   SIMCALL_PROCESS_CLEANUP,
index 806eb32..a46f11e 100644 (file)
@@ -28,7 +28,6 @@ const char* simcall_names[] = {
   "SIMCALL_VM_SHUTDOWN",
   "SIMCALL_VM_SAVE",
   "SIMCALL_VM_RESTORE",
   "SIMCALL_VM_SHUTDOWN",
   "SIMCALL_VM_SAVE",
   "SIMCALL_VM_RESTORE",
-  "SIMCALL_PROCESS_CREATE",
   "SIMCALL_PROCESS_KILL",
   "SIMCALL_PROCESS_KILLALL",
   "SIMCALL_PROCESS_CLEANUP",
   "SIMCALL_PROCESS_KILL",
   "SIMCALL_PROCESS_KILLALL",
   "SIMCALL_PROCESS_CLEANUP",
@@ -129,11 +128,6 @@ case SIMCALL_VM_RESTORE:
       SIMIX_simcall_answer(simcall);
       break;  
 
       SIMIX_simcall_answer(simcall);
       break;  
 
-case SIMCALL_PROCESS_CREATE:
-      simcall->result.dp = simcall_HANDLER_process_create(simcall ,  simcall->args[0].cc, (xbt_main_func_t) simcall->args[1].fp,  simcall->args[2].dp,  simcall->args[3].cc,  simcall->args[4].d,  simcall->args[5].i, (char**) simcall->args[6].dp, (xbt_dict_t) simcall->args[7].dp,  simcall->args[8].i);
-      SIMIX_simcall_answer(simcall);
-      break;  
-
 case SIMCALL_PROCESS_KILL:
        simcall_HANDLER_process_kill(simcall , (smx_process_t) simcall->args[0].dp);
       SIMIX_simcall_answer(simcall);
 case SIMCALL_PROCESS_KILL:
        simcall_HANDLER_process_kill(simcall , (smx_process_t) simcall->args[0].dp);
       SIMIX_simcall_answer(simcall);
index e867deb..e08a38d 100644 (file)
@@ -52,7 +52,6 @@ Proc H vm_shutdown (void) (ind_vm, void*, sg_host_t)
 Proc H vm_save (void) (ind_vm, void*, sg_host_t)
 Proc H vm_restore (void) (ind_vm, void*, sg_host_t)
 
 Proc H vm_save (void) (ind_vm, void*, sg_host_t)
 Proc H vm_restore (void) (ind_vm, void*, sg_host_t)
 
-Func H process_create (void*) (name, const char*) (code, FPtr, xbt_main_func_t) (data, void*) (hostname, const char*) (kill_time, double) (argc, int) (argv, void*, char**) (properties, void*, xbt_dict_t) (auto_restart, int)
 Proc H process_kill (void) (process, void*, smx_process_t)
 Proc H process_killall (void) (reset_pid, int)
 Proc - process_cleanup (void) (process, void*, smx_process_t)
 Proc H process_kill (void) (process, void*, smx_process_t)
 Proc H process_killall (void) (reset_pid, int)
 Proc - process_cleanup (void) (process, void*, smx_process_t)