Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[SGpp] make SIMIX_HOST_LEVEL private
authorMartin Quinson <martin.quinson@loria.fr>
Tue, 14 Jul 2015 23:46:11 +0000 (01:46 +0200)
committerMartin Quinson <martin.quinson@loria.fr>
Sat, 18 Jul 2015 18:07:02 +0000 (20:07 +0200)
14 files changed:
buildtools/Cmake/DefinePackages.cmake
include/simgrid/simix.h
include/surf/surf_routing.h
src/bindings/lua/lua_platf.c
src/msg/msg_environment.c
src/msg/msg_vm.c
src/simix/smx_deployment.c
src/simix/smx_global.c
src/simix/smx_host.c
src/simix/smx_host_private.h
src/simix/smx_process.c
src/simix/smx_vm.c
src/surf/surf_c_bindings.cpp
src/surf/surf_routing.cpp

index fe7c230..7e8a112 100644 (file)
@@ -393,6 +393,7 @@ endif()
 
 set(SIMGRID_SRC
   src/simgrid/sg_config.c
+  src/simgrid/host.cpp
   )
 
 set(MSG_SRC
index 95c78df..b85a67d 100644 (file)
@@ -36,7 +36,6 @@ typedef union u_smx_scalar u_smx_scalar_t;
 
     \see m_host_management
   @{ */
-typedef struct s_smx_host_priv *smx_host_priv_t;
 typedef enum {
   SIMIX_WAITING,
   SIMIX_READY,
index 6484c87..d6a68df 100644 (file)
@@ -16,7 +16,6 @@ XBT_PUBLIC_DATA(xbt_lib_t) host_lib;
 XBT_PUBLIC_DATA(int) ROUTING_HOST_LEVEL; //Routing level
 XBT_PUBLIC_DATA(int)  SURF_CPU_LEVEL;    //Surf cpu level
 XBT_PUBLIC_DATA(int) SURF_HOST_LEVEL;    //Surf workstation level
-XBT_PUBLIC_DATA(int) SIMIX_HOST_LEVEL;  //Simix host level
 XBT_PUBLIC_DATA(int) SIMIX_STORAGE_LEVEL;  //Simix storage level
 XBT_PUBLIC_DATA(int)  MSG_HOST_LEVEL;    //Msg level
 XBT_PUBLIC_DATA(int)  SD_HOST_LEVEL;    //Simdag host level
index 6606b42..8f43f67 100644 (file)
@@ -64,7 +64,9 @@ int console_close(lua_State *L) {
     if(data[SURF_HOST_LEVEL]){
       XBT_DEBUG("\tSee surf host %s",name);
       SIMIX_host_create(name, NULL);
-      __MSG_host_create((sg_host_t)data[SIMIX_HOST_LEVEL]);
+      // THIS IS BRAINDEAD. There is no sg_host_t in that level, but a smx_host_priv. So commenting out for now.
+      // Lua is broken anyway. Christian will fix it
+      // __MSG_host_create((sg_host_t)data[SIMIX_HOST_LEVEL]);
     }
   }
 
index fef3604..00cbe8e 100644 (file)
@@ -44,7 +44,7 @@ void MSG_post_create_environment(void) {
 
   /* Initialize MSG hosts */
   xbt_lib_foreach(host_lib, cursor, name, data) {
-    if(data[SIMIX_HOST_LEVEL])
+    if(sg_host_simix((sg_host_t)data))
       __MSG_host_create(xbt_dict_cursor_get_elm(cursor));
   }
 
index ac42d90..c60a3eb 100644 (file)
@@ -205,7 +205,7 @@ msg_vm_t MSG_vm_create_core(msg_host_t ind_pm, const char *name)
   /* make sure the VM of the same name does not exit */
   {
     xbt_dictelm_t ind_host_tmp = xbt_lib_get_elm_or_null(host_lib, name);
-    if (ind_host_tmp && xbt_lib_get_level(ind_host_tmp, SIMIX_HOST_LEVEL) != NULL) {
+    if (ind_host_tmp && sg_host_simix(ind_host_tmp) != NULL) {
       XBT_ERROR("host %s already exits", name);
       return NULL;
     }
index f4d472f..faf3c7b 100644 (file)
@@ -48,10 +48,10 @@ static void parse_process(sg_platf_process_cbarg_t process)
   arg->name = xbt_strdup(arg->argv[0]);
   arg->kill_time = kill_time;
   arg->properties = current_property_set;
-  if (!SIMIX_host_priv(host)->boot_processes) {
-    SIMIX_host_priv(host)->boot_processes = xbt_dynar_new(sizeof(smx_process_arg_t), _SIMIX_host_free_process_arg);
+  if (!sg_host_simix(host)->boot_processes) {
+    sg_host_simix(host)->boot_processes = xbt_dynar_new(sizeof(smx_process_arg_t), _SIMIX_host_free_process_arg);
   }
-  xbt_dynar_push_as(SIMIX_host_priv(host)->boot_processes,smx_process_arg_t,arg);
+  xbt_dynar_push_as(sg_host_simix(host)->boot_processes,smx_process_arg_t,arg);
 
   if (start_time > SIMIX_get_clock()) {
     arg = xbt_new0(s_smx_process_arg_t, 1);
index 9581afb..9f66e79 100644 (file)
@@ -206,7 +206,7 @@ void SIMIX_global_init(int *argc, char **argv)
     simix_timers = xbt_heap_new(8, &free);
   }
 
-  SIMIX_HOST_LEVEL = xbt_lib_add_level(host_lib,SIMIX_host_destroy);
+  sg_host_init();
   SIMIX_STORAGE_LEVEL = xbt_lib_add_level(storage_lib, SIMIX_storage_destroy);
 
   if (sg_cfg_get_boolean("clean_atexit"))
index e119d18..8c7fc7f 100644 (file)
@@ -21,8 +21,9 @@ static void SIMIX_execution_finish(smx_synchro_t synchro);
  * \param name name of the host to create
  * \param data some user data (may be NULL)
  */
-sg_host_t SIMIX_host_create(const char *name, void *data)
+sg_host_t SIMIX_host_create(const char *name, void *killme) // FIXME: braindead prototype. Take sg_host as first arg
 {
+  sg_host_t host = xbt_lib_get_elm_or_null(host_lib, name);
   smx_host_priv_t smx_host = xbt_new0(s_smx_host_priv_t, 1);
   s_smx_process_t proc;
 
@@ -31,9 +32,9 @@ sg_host_t SIMIX_host_create(const char *name, void *data)
       xbt_swag_new(xbt_swag_offset(proc, host_proc_hookup));
 
   /* Update global variables */
-  xbt_lib_set(host_lib,name,SIMIX_HOST_LEVEL,smx_host);
+  sg_host_simix_set(host, smx_host);
 
-  return xbt_lib_get_elm_or_null(host_lib, name);
+  return host;
 }
 
 /**
@@ -42,7 +43,7 @@ sg_host_t SIMIX_host_create(const char *name, void *data)
  */
 void SIMIX_host_on(sg_host_t h)
 {
-  smx_host_priv_t host = SIMIX_host_priv(h);
+  smx_host_priv_t host = sg_host_simix(h);
 
   xbt_assert((host != NULL), "Invalid parameters");
 
@@ -98,7 +99,7 @@ void simcall_HANDLER_host_off(smx_simcall_t simcall, sg_host_t h)
  */
 void SIMIX_host_off(sg_host_t h, smx_process_t issuer)
 {
-  smx_host_priv_t host = SIMIX_host_priv(h);
+  smx_host_priv_t host = sg_host_simix(h);
 
   xbt_assert((host != NULL), "Invalid parameters");
 
@@ -188,7 +189,7 @@ int SIMIX_host_get_core(sg_host_t host){
 }
 
 xbt_swag_t SIMIX_host_get_process_list(sg_host_t host){
-  smx_host_priv_t host_priv = SIMIX_host_priv(host);
+  smx_host_priv_t host_priv = sg_host_simix(host);
 
   return host_priv->process_list;
 }
@@ -259,8 +260,8 @@ void SIMIX_host_add_auto_restart_process(sg_host_t host,
                                          xbt_dict_t properties,
                                          int auto_restart)
 {
-  if (!SIMIX_host_priv(host)->auto_restart_processes) {
-    SIMIX_host_priv(host)->auto_restart_processes = xbt_dynar_new(sizeof(smx_process_arg_t),_SIMIX_host_free_process_arg);
+  if (!sg_host_simix(host)->auto_restart_processes) {
+    sg_host_simix(host)->auto_restart_processes = xbt_dynar_new(sizeof(smx_process_arg_t),_SIMIX_host_free_process_arg);
   }
   smx_process_arg_t arg = xbt_new(s_smx_process_arg_t,1);
   arg->name = xbt_strdup(name);
@@ -286,7 +287,7 @@ void SIMIX_host_add_auto_restart_process(sg_host_t host,
     xbt_dict_set(watched_hosts_lib,sg_host_name(host),host,NULL);
     XBT_DEBUG("Have pushed host %s to watched_hosts_lib because state == SURF_RESOURCE_OFF",sg_host_name(host));
   }
-  xbt_dynar_push_as(SIMIX_host_priv(host)->auto_restart_processes,smx_process_arg_t,arg);
+  xbt_dynar_push_as(sg_host_simix(host)->auto_restart_processes,smx_process_arg_t,arg);
 }
 /**
  * \brief Restart the list of processes that have been registered to the host
@@ -295,7 +296,7 @@ void SIMIX_host_restart_processes(sg_host_t host)
 {
   unsigned int cpt;
   smx_process_arg_t arg;
-  xbt_dynar_t process_list = SIMIX_host_priv(host)->auto_restart_processes;
+  xbt_dynar_t process_list = sg_host_simix(host)->auto_restart_processes;
   if (!process_list)
     return;
 
index 2895f7b..da0af03 100644 (file)
 
 SG_BEGIN_DECL()
 
-/** @brief Host datatype */
+/** @brief Host datatype from SIMIX POV */
 typedef struct s_smx_host_priv {
   xbt_swag_t process_list;
   xbt_dynar_t auto_restart_processes;
-  xbt_dynar_t boot_processes; 
+  xbt_dynar_t boot_processes;
 } s_smx_host_priv_t;
 
-static inline smx_host_priv_t SIMIX_host_priv(sg_host_t host){
-  return (smx_host_priv_t) xbt_lib_get_level(host, SIMIX_HOST_LEVEL);
-}
-
 void _SIMIX_host_free_process_arg(void *);
 sg_host_t SIMIX_host_create(const char *name, void *data);
 void SIMIX_host_destroy(void *host);
index fe3a213..8dbf276 100644 (file)
@@ -96,7 +96,7 @@ void SIMIX_process_cleanup(smx_process_t process)
 
   XBT_DEBUG("%p should not be run anymore",process);
   xbt_swag_remove(process, simix_global->process_list);
-  xbt_swag_remove(process, SIMIX_host_priv(process->host)->process_list);
+  xbt_swag_remove(process, sg_host_simix(process->host)->process_list);
   xbt_swag_insert(process, simix_global->process_to_destroy);
   process->context->iwannadie = 0;
 
@@ -286,7 +286,7 @@ void SIMIX_process_create(smx_process_t *process,
     (*process)->properties = properties;
 
     /* Add the process to it's host process list */
-    xbt_swag_insert(*process, SIMIX_host_priv(host)->process_list);
+    xbt_swag_insert(*process, sg_host_simix(host)->process_list);
 
     XBT_DEBUG("Start context '%s'", (*process)->name);
 
@@ -472,9 +472,9 @@ void SIMIX_process_change_host(smx_process_t process,
              sg_host_t dest)
 {
   xbt_assert((process != NULL), "Invalid parameters");
-  xbt_swag_remove(process, SIMIX_host_priv(process->host)->process_list);
+  xbt_swag_remove(process, sg_host_simix(process->host)->process_list);
   process->host = dest;
-  xbt_swag_insert(process, SIMIX_host_priv(dest)->process_list);
+  xbt_swag_insert(process, sg_host_simix(dest)->process_list);
 }
 
 
index 3d9f156..29c48b9 100644 (file)
@@ -196,13 +196,13 @@ void SIMIX_vm_suspend(sg_host_t ind_vm, smx_process_t issuer)
   if (SIMIX_vm_get_state(ind_vm) != SURF_VM_STATE_RUNNING)
     THROWF(vm_error, 0, "VM(%s) is not running", name);
 
-  XBT_DEBUG("suspend VM(%s), where %d processes exist", name, xbt_swag_size(SIMIX_host_priv(ind_vm)->process_list));
+  XBT_DEBUG("suspend VM(%s), where %d processes exist", name, xbt_swag_size(sg_host_simix(ind_vm)->process_list));
 
   /* jump to vm_ws_suspend. The state will be set. */
   surf_vm_suspend(ind_vm);
 
   smx_process_t smx_process, smx_process_safe;
-  xbt_swag_foreach_safe(smx_process, smx_process_safe, SIMIX_host_priv(ind_vm)->process_list) {
+  xbt_swag_foreach_safe(smx_process, smx_process_safe, sg_host_simix(ind_vm)->process_list) {
     XBT_DEBUG("suspend %s", smx_process->name);
     SIMIX_process_suspend(smx_process, issuer);
   }
@@ -236,13 +236,13 @@ void SIMIX_vm_resume(sg_host_t ind_vm, smx_process_t issuer)
   if (SIMIX_vm_get_state(ind_vm) != SURF_VM_STATE_SUSPENDED)
     THROWF(vm_error, 0, "VM(%s) was not suspended", name);
 
-  XBT_DEBUG("resume VM(%s), where %d processes exist", name, xbt_swag_size(SIMIX_host_priv(ind_vm)->process_list));
+  XBT_DEBUG("resume VM(%s), where %d processes exist", name, xbt_swag_size(sg_host_simix(ind_vm)->process_list));
 
   /* jump to vm_ws_resume() */
   surf_vm_resume(ind_vm);
 
   smx_process_t smx_process, smx_process_safe;
-  xbt_swag_foreach_safe(smx_process, smx_process_safe, SIMIX_host_priv(ind_vm)->process_list) {
+  xbt_swag_foreach_safe(smx_process, smx_process_safe, sg_host_simix(ind_vm)->process_list) {
     XBT_DEBUG("resume %s", smx_process->name);
     SIMIX_process_resume(smx_process, issuer);
   }
@@ -269,13 +269,13 @@ void SIMIX_vm_save(sg_host_t ind_vm, smx_process_t issuer)
     THROWF(vm_error, 0, "VM(%s) is not running", name);
 
 
-  XBT_DEBUG("save VM(%s), where %d processes exist", name, xbt_swag_size(SIMIX_host_priv(ind_vm)->process_list));
+  XBT_DEBUG("save VM(%s), where %d processes exist", name, xbt_swag_size(sg_host_simix(ind_vm)->process_list));
 
   /* jump to vm_ws_save() */
   surf_vm_save(ind_vm);
 
   smx_process_t smx_process, smx_process_safe;
-  xbt_swag_foreach_safe(smx_process, smx_process_safe, SIMIX_host_priv(ind_vm)->process_list) {
+  xbt_swag_foreach_safe(smx_process, smx_process_safe, sg_host_simix(ind_vm)->process_list) {
     XBT_DEBUG("suspend %s", smx_process->name);
     SIMIX_process_suspend(smx_process, issuer);
   }
@@ -300,13 +300,13 @@ void SIMIX_vm_restore(sg_host_t ind_vm, smx_process_t issuer)
   if (SIMIX_vm_get_state(ind_vm) != SURF_VM_STATE_SAVED)
     THROWF(vm_error, 0, "VM(%s) was not saved", name);
 
-  XBT_DEBUG("restore VM(%s), where %d processes exist", name, xbt_swag_size(SIMIX_host_priv(ind_vm)->process_list));
+  XBT_DEBUG("restore VM(%s), where %d processes exist", name, xbt_swag_size(sg_host_simix(ind_vm)->process_list));
 
   /* jump to vm_ws_restore() */
   surf_vm_resume(ind_vm);
 
   smx_process_t smx_process, smx_process_safe;
-  xbt_swag_foreach_safe(smx_process, smx_process_safe, SIMIX_host_priv(ind_vm)->process_list) {
+  xbt_swag_foreach_safe(smx_process, smx_process_safe, sg_host_simix(ind_vm)->process_list) {
     XBT_DEBUG("resume %s", smx_process->name);
     SIMIX_process_resume(smx_process, issuer);
   }
@@ -333,10 +333,10 @@ void SIMIX_vm_shutdown(sg_host_t ind_vm, smx_process_t issuer)
     THROWF(vm_error, 0, "VM(%s) is not running", name);
 
   XBT_DEBUG("shutdown %s", name);
-  XBT_DEBUG("%d processes in the VM", xbt_swag_size(SIMIX_host_priv(ind_vm)->process_list));
+  XBT_DEBUG("%d processes in the VM", xbt_swag_size(sg_host_simix(ind_vm)->process_list));
 
   smx_process_t smx_process, smx_process_safe;
-  xbt_swag_foreach_safe(smx_process, smx_process_safe, SIMIX_host_priv(ind_vm)->process_list) {
+  xbt_swag_foreach_safe(smx_process, smx_process_safe, sg_host_simix(ind_vm)->process_list) {
     XBT_DEBUG("kill %s", smx_process->name);
     SIMIX_process_kill(smx_process, issuer);
   }
@@ -367,7 +367,7 @@ void SIMIX_vm_destroy(sg_host_t ind_vm)
   XBT_DEBUG("destroy %s", hostname);
 
   /* this will call the registered callback function, i.e., SIMIX_host_destroy().  */
-  xbt_lib_unset(host_lib, hostname, SIMIX_HOST_LEVEL, 1);
+  sg_host_simix_destroy(ind_vm);
 
   /* jump to vm_ws_destroy(). The surf level resource will be freed. */
   surf_vm_destroy(ind_vm);
index 177ca14..ffcf0ab 100644 (file)
@@ -38,10 +38,6 @@ char *surf_routing_edge_name(sg_routing_edge_t edge){
   return edge->getName();
 }
 
-#ifdef CONTEXT_THREADS
-//FIXME:keeporremove static xbt_parmap_t surf_parmap = NULL; /* parallel map on models */
-#endif
-
 extern double NOW;
 extern double *surf_mins; /* return value of share_resources for each model */
 extern int surf_min_index;       /* current index in surf_mins */
index 4a381dc..16485fb 100644 (file)
@@ -26,7 +26,6 @@ xbt_lib_t host_lib;
 int ROUTING_HOST_LEVEL;         //Routing level
 int SURF_CPU_LEVEL;             //Surf cpu level
 int SURF_HOST_LEVEL;            //Surf host level
-int SIMIX_HOST_LEVEL;           //Simix host level
 int SIMIX_STORAGE_LEVEL;        //Simix storage level
 int MSG_HOST_LEVEL;             //Msg host level
 int MSG_STORAGE_LEVEL;          //Msg storage level