From 8d545185124c10e9c58d954d12103d6620e201d2 Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Wed, 15 Jul 2015 01:46:11 +0200 Subject: [PATCH] [SGpp] make SIMIX_HOST_LEVEL private --- buildtools/Cmake/DefinePackages.cmake | 1 + include/simgrid/simix.h | 1 - include/surf/surf_routing.h | 1 - src/bindings/lua/lua_platf.c | 4 +++- src/msg/msg_environment.c | 2 +- src/msg/msg_vm.c | 2 +- src/simix/smx_deployment.c | 6 +++--- src/simix/smx_global.c | 2 +- src/simix/smx_host.c | 21 +++++++++++---------- src/simix/smx_host_private.h | 8 ++------ src/simix/smx_process.c | 8 ++++---- src/simix/smx_vm.c | 22 +++++++++++----------- src/surf/surf_c_bindings.cpp | 4 ---- src/surf/surf_routing.cpp | 1 - 14 files changed, 38 insertions(+), 45 deletions(-) diff --git a/buildtools/Cmake/DefinePackages.cmake b/buildtools/Cmake/DefinePackages.cmake index fe7c23011e..7e8a112dd7 100644 --- a/buildtools/Cmake/DefinePackages.cmake +++ b/buildtools/Cmake/DefinePackages.cmake @@ -393,6 +393,7 @@ endif() set(SIMGRID_SRC src/simgrid/sg_config.c + src/simgrid/host.cpp ) set(MSG_SRC diff --git a/include/simgrid/simix.h b/include/simgrid/simix.h index 95c78df42f..b85a67dd3f 100644 --- a/include/simgrid/simix.h +++ b/include/simgrid/simix.h @@ -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, diff --git a/include/surf/surf_routing.h b/include/surf/surf_routing.h index 6484c8758c..d6a68df24e 100644 --- a/include/surf/surf_routing.h +++ b/include/surf/surf_routing.h @@ -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 diff --git a/src/bindings/lua/lua_platf.c b/src/bindings/lua/lua_platf.c index 6606b42a37..8f43f67998 100644 --- a/src/bindings/lua/lua_platf.c +++ b/src/bindings/lua/lua_platf.c @@ -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]); } } diff --git a/src/msg/msg_environment.c b/src/msg/msg_environment.c index fef3604341..00cbe8e028 100644 --- a/src/msg/msg_environment.c +++ b/src/msg/msg_environment.c @@ -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)); } diff --git a/src/msg/msg_vm.c b/src/msg/msg_vm.c index ac42d90c75..c60a3eb171 100644 --- a/src/msg/msg_vm.c +++ b/src/msg/msg_vm.c @@ -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; } diff --git a/src/simix/smx_deployment.c b/src/simix/smx_deployment.c index f4d472f689..faf3c7b27c 100644 --- a/src/simix/smx_deployment.c +++ b/src/simix/smx_deployment.c @@ -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); diff --git a/src/simix/smx_global.c b/src/simix/smx_global.c index 9581afb296..9f66e79605 100644 --- a/src/simix/smx_global.c +++ b/src/simix/smx_global.c @@ -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")) diff --git a/src/simix/smx_host.c b/src/simix/smx_host.c index e119d18177..8c7fc7f15a 100644 --- a/src/simix/smx_host.c +++ b/src/simix/smx_host.c @@ -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; diff --git a/src/simix/smx_host_private.h b/src/simix/smx_host_private.h index 2895f7b1f5..da0af03ce8 100644 --- a/src/simix/smx_host_private.h +++ b/src/simix/smx_host_private.h @@ -12,17 +12,13 @@ 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); diff --git a/src/simix/smx_process.c b/src/simix/smx_process.c index fe3a213d06..8dbf2764f1 100644 --- a/src/simix/smx_process.c +++ b/src/simix/smx_process.c @@ -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); } diff --git a/src/simix/smx_vm.c b/src/simix/smx_vm.c index 3d9f156a99..29c48b9144 100644 --- a/src/simix/smx_vm.c +++ b/src/simix/smx_vm.c @@ -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); diff --git a/src/surf/surf_c_bindings.cpp b/src/surf/surf_c_bindings.cpp index 177ca14bf7..ffcf0abbb9 100644 --- a/src/surf/surf_c_bindings.cpp +++ b/src/surf/surf_c_bindings.cpp @@ -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 */ diff --git a/src/surf/surf_routing.cpp b/src/surf/surf_routing.cpp index 4a381dcb89..16485fbc99 100644 --- a/src/surf/surf_routing.cpp +++ b/src/surf/surf_routing.cpp @@ -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 -- 2.20.1