X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/982cab33412abf91552a74e5cb567164d4a9a647..9fef6711973925db4d95836b9d20062ca9129c6b:/src/surf/sg_platf.cpp diff --git a/src/surf/sg_platf.cpp b/src/surf/sg_platf.cpp index 8cfb69d991..a073a637a9 100644 --- a/src/surf/sg_platf.cpp +++ b/src/surf/sg_platf.cpp @@ -151,7 +151,15 @@ void sg_platf_new_host(sg_platf_host_cbarg_t host) cpu->setStateTrace(host->state_trace); if (host->speed_trace) cpu->setSpeedTrace(host->speed_trace); - surf_host_model->createHost(host->id, netcard, cpu, host->properties)->attach(h); + surf_host_model->createHost(host->id, netcard, cpu)->attach(h); + + if (host->properties) { + xbt_dict_cursor_t cursor=NULL; + char *key,*data; + xbt_dict_foreach(host->properties,cursor,key,data) + h->setProperty(key,data); + xbt_dict_free(&host->properties); + } if (host->pstate != 0) cpu->setPState(host->pstate); @@ -346,6 +354,7 @@ void sg_platf_new_cluster(sg_platf_cluster_cbarg_t cluster) xbt_free(host_id); rankId++; } + delete radicals; // Add a router. It is magically used thanks to the way in which surf_routing_cluster is written, // and it's very useful to connect clusters together @@ -534,8 +543,6 @@ void sg_platf_new_bypassRoute(sg_platf_route_cbarg_t bypassRoute) void sg_platf_new_process(sg_platf_process_cbarg_t process) { - xbt_assert(simix_global,"Cannot create process without SIMIX."); - sg_host_t host = sg_host_by_name(process->host); if (!host) { // The requested host does not exist. Do a nice message to the user @@ -580,9 +587,9 @@ void sg_platf_new_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 (!sg_host_simix(host)->boot_processes) { + 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(sg_host_simix(host)->boot_processes,smx_process_arg_t,arg); if (start_time > SIMIX_get_clock()) { @@ -596,8 +603,7 @@ void sg_platf_new_process(sg_platf_process_cbarg_t process) arg->kill_time = kill_time; arg->properties = current_property_set; - XBT_DEBUG("Process %s(%s) will be started at time %f", arg->name, - arg->hostname, start_time); + XBT_DEBUG("Process %s(%s) will be started at time %f", arg->name, arg->hostname, start_time); SIMIX_timer_set(start_time, [](void* arg) { SIMIX_process_create_from_wrapper((smx_process_arg_t) arg); }, arg); @@ -718,22 +724,22 @@ static void surf_config_models_setup() int storage_id = -1; char *storage_model_name = NULL; - host_model_name = xbt_cfg_get_string(_sg_cfg_set, "host/model"); - vm_model_name = xbt_cfg_get_string(_sg_cfg_set, "vm/model"); - network_model_name = xbt_cfg_get_string(_sg_cfg_set, "network/model"); - cpu_model_name = xbt_cfg_get_string(_sg_cfg_set, "cpu/model"); - storage_model_name = xbt_cfg_get_string(_sg_cfg_set, "storage/model"); + 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(_sg_cfg_set, "network/model") || - !xbt_cfg_is_default_value(_sg_cfg_set, "cpu/model")) && - xbt_cfg_is_default_value(_sg_cfg_set, "host/model")) { + 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(_sg_cfg_set, "host/model", host_model_name); + xbt_cfg_set_string("host/model", host_model_name); } XBT_DEBUG("host model: %s", host_model_name); @@ -788,7 +794,7 @@ static void surf_config_models_setup() * @param AS_id name of this autonomous system. Must be unique in the platform * @param wanted_routing_type one of Full, Floyd, Dijkstra or similar. Full list in the variable routing_models, in src/surf/surf_routing.c */ -void sg_platf_new_AS_begin(sg_platf_AS_cbarg_t AS) +simgrid::s4u::As * sg_platf_new_AS_begin(sg_platf_AS_cbarg_t AS) { if (!surf_parse_models_setup_already_called) { /* Initialize the surf models. That must be done after we got all config, and before we need the models. @@ -854,6 +860,8 @@ void sg_platf_new_AS_begin(sg_platf_AS_cbarg_t AS) simgrid::surf::asCreatedCallbacks(new_as); if (TRACE_is_enabled()) sg_instr_AS_begin(AS); + + return new_as; } /**