From: Martin Quinson Date: Sat, 15 Oct 2016 19:03:05 +0000 (+0200) Subject: cleanups in the model initialization X-Git-Tag: v3_14~324 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/09591e452f1ad241ba2b790bae40a166cee8285e?hp=ddf6262b78ea331d365560f3c94270a97a6d7763 cleanups in the model initialization --- diff --git a/src/include/surf/surf.h b/src/include/surf/surf.h index 0370873e62..aeabe478ee 100644 --- a/src/include/surf/surf.h +++ b/src/include/surf/surf.h @@ -425,8 +425,6 @@ XBT_PUBLIC(const char * ) surf_storage_get_host(surf_resource_t resource); /* Implementations of model object */ /**************************************/ -XBT_PUBLIC_DATA(void_f_void_t) surf_cpu_model_init_preparse; - /** \ingroup SURF_models * \brief The CPU model object for the physical machine layer */ diff --git a/src/surf/cpu_interface.cpp b/src/surf/cpu_interface.cpp index 428f1a94db..4873c1235e 100644 --- a/src/surf/cpu_interface.cpp +++ b/src/surf/cpu_interface.cpp @@ -12,8 +12,6 @@ XBT_LOG_EXTERNAL_CATEGORY(surf_kernel); XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_cpu, surf, "Logging specific to the SURF cpu module"); -void_f_void_t surf_cpu_model_init_preparse = nullptr; - simgrid::surf::CpuModel *surf_cpu_model_pm; simgrid::surf::CpuModel *surf_cpu_model_vm; diff --git a/src/surf/sg_platf.cpp b/src/surf/sg_platf.cpp index 9987e11df4..632ae08bd6 100644 --- a/src/surf/sg_platf.cpp +++ b/src/surf/sg_platf.cpp @@ -679,74 +679,46 @@ void sg_platf_end() { /* Pick the right models for CPU, net and host, and call their model_init_preparse */ static void surf_config_models_setup() { - const char *host_model_name; - const char *vm_model_name; - int host_id = -1; - int vm_id = -1; - char *network_model_name = nullptr; - char *cpu_model_name = nullptr; - int storage_id = -1; - char *storage_model_name = nullptr; - - host_model_name = xbt_cfg_get_string("host/model"); - vm_model_name = xbt_cfg_get_string("vm/model"); - network_model_name = xbt_cfg_get_string("network/model"); - cpu_model_name = xbt_cfg_get_string("cpu/model"); - storage_model_name = xbt_cfg_get_string("storage/model"); - - /* Check whether we use a net/cpu model differing from the default ones, in which case - * we should switch to the "compound" host model to correctly dispatch stuff to - * the right net/cpu models. - */ - - if ((!xbt_cfg_is_default_value("network/model") || - !xbt_cfg_is_default_value("cpu/model")) && + const char* host_model_name = xbt_cfg_get_string("host/model"); + const char* vm_model_name = xbt_cfg_get_string("vm/model"); + const char* network_model_name = xbt_cfg_get_string("network/model"); + const char* cpu_model_name = xbt_cfg_get_string("cpu/model"); + const char* storage_model_name = xbt_cfg_get_string("storage/model"); + + /* The compound host model is needed when using non-default net/cpu models */ + if ((!xbt_cfg_is_default_value("network/model") || !xbt_cfg_is_default_value("cpu/model")) && xbt_cfg_is_default_value("host/model")) { host_model_name = "compound"; xbt_cfg_set_string("host/model", host_model_name); } XBT_DEBUG("host model: %s", host_model_name); - host_id = find_model_description(surf_host_model_description, host_model_name); if (!strcmp(host_model_name, "compound")) { - int network_id = -1; - int cpu_id = -1; + xbt_assert(cpu_model_name, "Set a cpu model to use with the 'compound' host model"); + xbt_assert(network_model_name, "Set a network model to use with the 'compound' host model"); - xbt_assert(cpu_model_name, - "Set a cpu model to use with the 'compound' host model"); + int cpu_id = find_model_description(surf_cpu_model_description, cpu_model_name); + surf_cpu_model_description[cpu_id].model_init_preparse(); - xbt_assert(network_model_name, - "Set a network model to use with the 'compound' host model"); - - if(surf_cpu_model_init_preparse){ - surf_cpu_model_init_preparse(); - } else { - cpu_id = - find_model_description(surf_cpu_model_description, cpu_model_name); - surf_cpu_model_description[cpu_id].model_init_preparse(); - } - - network_id = - find_model_description(surf_network_model_description, - network_model_name); + int network_id = find_model_description(surf_network_model_description, network_model_name); surf_network_model_description[network_id].model_init_preparse(); } XBT_DEBUG("Call host_model_init"); + int host_id = find_model_description(surf_host_model_description, host_model_name); surf_host_model_description[host_id].model_init_preparse(); XBT_DEBUG("Call vm_model_init"); - vm_id = find_model_description(surf_vm_model_description, vm_model_name); + int vm_id = find_model_description(surf_vm_model_description, vm_model_name); surf_vm_model_description[vm_id].model_init_preparse(); XBT_DEBUG("Call storage_model_init"); - storage_id = find_model_description(surf_storage_model_description, storage_model_name); + int storage_id = find_model_description(surf_storage_model_description, storage_model_name); surf_storage_model_description[storage_id].model_init_preparse(); - } /** - * \brief Make a new routing component to the platform + * \brief Add an AS to the platform * * Add a new autonomous system to the platform. Any elements (such as host, * router or sub-AS) added after this call and before the corresponding call