X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/bf2a602daa0066ff05021f0ddfa55cffd55b6171..65ad88b71f10717fb542633b394035ff2e53e308:/src/simix/smx_host.cpp diff --git a/src/simix/smx_host.cpp b/src/simix/smx_host.cpp index a835e87bd2..9537df48ea 100644 --- a/src/simix/smx_host.cpp +++ b/src/simix/smx_host.cpp @@ -46,8 +46,12 @@ namespace simgrid { SIMIX_display_process_status(); THROWF(arg_error, 0, "%s", msg); } - xbt_dynar_free(&auto_restart_processes); - xbt_dynar_free(&boot_processes); + for (auto arg : auto_restart_processes) + delete arg; + auto_restart_processes.clear(); + for (auto arg : boot_processes) + delete arg; + boot_processes.clear(); xbt_swag_free(process_list); } @@ -57,9 +61,7 @@ namespace simgrid { */ void Host::turnOn() { - unsigned int cpt; - smx_process_arg_t arg; - xbt_dynar_foreach(boot_processes,cpt,arg) { + for (auto arg : boot_processes) { XBT_DEBUG("Booting Process %s(%s) right now", arg->name.c_str(), arg->hostname); simix_global->create_process_function(arg->name.c_str(), arg->code, @@ -133,9 +135,6 @@ void SIMIX_host_add_auto_restart_process( void* data, const char *hostname, double kill_time, xbt_dict_t properties, int auto_restart) { - 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 = new simgrid::simix::ProcessArg(); arg->name = name; arg->code = std::move(code); @@ -149,24 +148,22 @@ void SIMIX_host_add_auto_restart_process( xbt_dict_set(watched_hosts_lib,sg_host_get_name(host),host,nullptr); XBT_DEBUG("Push host %s to watched_hosts_lib because state == SURF_RESOURCE_OFF",sg_host_get_name(host)); } - xbt_dynar_push_as(sg_host_simix(host)->auto_restart_processes,smx_process_arg_t,arg); + sg_host_simix(host)->auto_restart_processes.push_back(arg); } /** @brief Restart the list of processes that have been registered to the host */ void SIMIX_host_autorestart(sg_host_t host) { - unsigned int cpt; - smx_process_arg_t arg; - xbt_dynar_t process_list = sg_host_simix(host)->auto_restart_processes; - if (!process_list) + std::vector process_list = sg_host_simix(host)->auto_restart_processes; + if (process_list.empty()) return; - xbt_dynar_foreach (process_list, cpt, arg) { + for (auto arg : process_list) { XBT_DEBUG("Restarting Process %s(%s) right now", arg->name.c_str(), arg->hostname); simix_global->create_process_function(arg->name.c_str(), arg->code, nullptr, arg->hostname, arg->kill_time, arg->properties, arg->auto_restart, nullptr); } - xbt_dynar_reset(process_list); + process_list.clear(); } smx_activity_t simcall_HANDLER_execution_start(smx_simcall_t simcall, const char* name, double flops_amount,