X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/a511865336e83ac3654632265ed00b8f0bf0eccc..15af6f9bf88ff4bfdd0b8e87039e666ee092fbfe:/src/simix/smx_host.cpp?ds=sidebyside diff --git a/src/simix/smx_host.cpp b/src/simix/smx_host.cpp index d4684dd72f..3b17a20b70 100644 --- a/src/simix/smx_host.cpp +++ b/src/simix/smx_host.cpp @@ -16,10 +16,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_host, simix, "SIMIX hosts"); -/** - * \brief Internal function to create a SIMIX host. - * \param name name of the host to create - */ +/** @brief Internal function to create a SIMIX host. */ void SIMIX_host_create(sg_host_t host) // FIXME: braindead prototype. Take sg_host as parameter { smx_host_priv_t smx_host = xbt_new0(s_smx_host_priv_t, 1); @@ -32,10 +29,7 @@ void SIMIX_host_create(sg_host_t host) // FIXME: braindead prototype. Take sg_ho sg_host_simix_set(host, smx_host); } -/** - * \brief Start the host if it is off - * - */ +/** @brief Start the host if it is off */ void SIMIX_host_on(sg_host_t h) { smx_host_priv_t host = sg_host_simix(h); @@ -57,7 +51,6 @@ void SIMIX_host_on(sg_host_t h) NULL, arg->hostname, arg->kill_time, - arg->args, arg->properties, arg->auto_restart, NULL); @@ -67,7 +60,6 @@ void SIMIX_host_on(sg_host_t h) NULL, arg->hostname, arg->kill_time, - arg->args, arg->properties, arg->auto_restart); } @@ -75,10 +67,7 @@ void SIMIX_host_on(sg_host_t h) } } -/** - * \brief Stop the host if it is on - * - */ +/** @brief Stop the host if it is on */ void SIMIX_host_off(sg_host_t h, smx_process_t issuer) { smx_host_priv_t host = sg_host_simix(h); @@ -144,8 +133,7 @@ sg_host_t SIMIX_host_self(void) return (process == NULL) ? NULL : SIMIX_process_get_host(process); } -/* needs to be public and without simcall because it is called - by exceptions and logging events */ +/* needs to be public and without simcall for exceptions and logging events */ const char* SIMIX_host_self_get_name(void) { sg_host_t host = SIMIX_host_self(); @@ -167,26 +155,20 @@ void _SIMIX_host_free_process_arg(void *data) * The processes will only be restarted once, meaning that you will have to register the process * again to restart the process again. */ -void SIMIX_host_add_auto_restart_process(sg_host_t host, - const char *name, - xbt_main_func_t code, - void *data, - const char *hostname, - double kill_time, - int argc, char **argv, - xbt_dict_t properties, - int auto_restart) +void SIMIX_host_add_auto_restart_process( + sg_host_t host, const char *name, std::function code, + 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 = code; + arg->code = std::move(code); arg->data = data; arg->hostname = hostname; arg->kill_time = kill_time; - arg->args.assign(argc, argv); arg->properties = properties; arg->auto_restart = auto_restart; @@ -196,9 +178,7 @@ void SIMIX_host_add_auto_restart_process(sg_host_t host, } 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 - */ +/** @brief Restart the list of processes that have been registered to the host */ void SIMIX_host_autorestart(sg_host_t host) { unsigned int cpt; @@ -216,17 +196,15 @@ void SIMIX_host_autorestart(sg_host_t host) NULL, arg->hostname, arg->kill_time, - arg->args, arg->properties, arg->auto_restart, NULL); } else { simcall_process_create(arg->name.c_str(), - (xbt_main_func_t) arg->code, + arg->code, NULL, arg->hostname, arg->kill_time, - arg->args, arg->properties, arg->auto_restart); } @@ -242,10 +220,7 @@ smx_synchro_t SIMIX_execution_start(smx_process_t issuer, const char *name, double flops_amount, double priority, double bound, unsigned long affinity_mask){ /* alloc structures and initialize */ - simgrid::simix::Exec *exec = new simgrid::simix::Exec(); - exec->name = xbt_strdup(name); - exec->state = SIMIX_RUNNING; - exec->host = issuer->host; + simgrid::simix::Exec *exec = new simgrid::simix::Exec(name, issuer->host); /* set surf's action */ if (!MC_is_active() && !MC_record_replay_is_active()) { @@ -265,7 +240,7 @@ smx_synchro_t SIMIX_execution_start(smx_process_t issuer, const char *name, } } - XBT_DEBUG("Create execute synchro %p: %s", exec, exec->name); + XBT_DEBUG("Create execute synchro %p: %s", exec, exec->name.c_str()); return exec; } @@ -279,10 +254,7 @@ smx_synchro_t SIMIX_execution_parallel_start(const char *name, int i; /* alloc structures and initialize */ - simgrid::simix::Exec *exec = new simgrid::simix::Exec(); - exec->name = xbt_strdup(name); - exec->state = SIMIX_RUNNING; - exec->host = nullptr; /* FIXME: do we need the list of hosts? */ + simgrid::simix::Exec *exec = new simgrid::simix::Exec(name, nullptr); /* set surf's synchro */ host_list_cpy = xbt_new0(sg_host_t, host_nb); @@ -346,7 +318,7 @@ void simcall_HANDLER_execution_wait(smx_simcall_t simcall, smx_synchro_t synchro XBT_DEBUG("Wait for execution of synchro %p, state %d", synchro, (int)synchro->state); /* Associate this simcall to the synchro */ - xbt_fifo_push(synchro->simcalls, simcall); + synchro->simcalls.push_back(simcall); simcall->issuer->waiting_synchro = synchro; /* set surf's synchro */ @@ -363,11 +335,7 @@ void simcall_HANDLER_execution_wait(smx_simcall_t simcall, smx_synchro_t synchro void SIMIX_execution_finish(simgrid::simix::Exec *exec) { - xbt_fifo_item_t item; - smx_simcall_t simcall; - - xbt_fifo_foreach(exec->simcalls, item, simcall, smx_simcall_t) { - + for (smx_simcall_t simcall : exec->simcalls) { switch (exec->state) { case SIMIX_DONE: