X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f734ec7475682eb90323e804cbcfddd7e4523992..8777fcefb063df4a6c7c04f045c82e5eef400a11:/src/simix/smx_global.cpp diff --git a/src/simix/smx_global.cpp b/src/simix/smx_global.cpp index c1ffa87e93..0644ac793b 100644 --- a/src/simix/smx_global.cpp +++ b/src/simix/smx_global.cpp @@ -16,10 +16,10 @@ #include "simgrid/s4u/Engine.hpp" #include "simgrid/s4u/Host.hpp" +#include "smx_private.hpp" #include "src/surf/surf_interface.hpp" #include "src/surf/xml/platf.hpp" -#include "smx_private.hpp" -#include "xbt/ex.h" /* ex_backtrace_display */ +#include "xbt/ex.h" /* ex_backtrace_display */ #include "mc/mc.h" #include "simgrid/sg_config.h" @@ -43,7 +43,6 @@ #include "src/mc/mc_record.hpp" #if HAVE_SMPI -#include "src/smpi/include/private.h" #include "src/smpi/include/private.hpp" #endif @@ -54,20 +53,20 @@ std::unique_ptr simix_global; static xbt_heap_t simix_timers = nullptr; /** @brief Timer datatype */ -typedef class s_smx_timer { +class s_smx_timer_t { double date = 0.0; - s_smx_timer() = default; + s_smx_timer_t() = default; public: simgrid::xbt::Task callback; double getDate() { return date; } - s_smx_timer(double date, simgrid::xbt::Task callback) : date(date), callback(std::move(callback)) {} -} s_smx_timer_t; + s_smx_timer_t(double date, simgrid::xbt::Task callback) : date(date), callback(std::move(callback)) {} +}; void (*SMPI_switch_data_segment)(int) = nullptr; int _sg_do_verbose_exit = 1; -static void inthandler(int ignored) +static void inthandler(int) { if ( _sg_do_verbose_exit ) { XBT_INFO("CTRL-C pressed. The current status will be displayed before exit (disable that behavior with option 'verbose-exit')."); @@ -80,7 +79,7 @@ static void inthandler(int ignored) } #ifndef _WIN32 -static void segvhandler(int signum, siginfo_t *siginfo, void *context) +static void segvhandler(int signum, siginfo_t* siginfo, void* /*context*/) { if (siginfo->si_signo == SIGSEGV && siginfo->si_code == SEGV_ACCERR) { fprintf(stderr, "Access violation detected.\n" @@ -236,8 +235,8 @@ void SIMIX_global_init(int *argc, char **argv) }); simgrid::surf::storageCreatedCallbacks.connect([](simgrid::surf::StorageImpl* storage) { - sg_storage_t s = simgrid::s4u::Storage::byName(storage->cname()); - xbt_assert(s != nullptr, "Storage not found for name %s", storage->cname()); + sg_storage_t s = simgrid::s4u::Storage::byName(storage->getCname()); + xbt_assert(s != nullptr, "Storage not found for name %s", storage->getCname()); }); } @@ -265,6 +264,15 @@ void SIMIX_clean() if (smx_cleaned) return; // to avoid double cleaning by java and C + smx_cleaned = 1; + XBT_DEBUG("SIMIX_clean called. Simulation's over."); + if (not simix_global->process_to_run.empty() && SIMIX_get_clock() <= 0.0) { + XBT_CRITICAL(" "); + XBT_CRITICAL("The time is still 0, and you still have processes ready to run."); + XBT_CRITICAL("It seems that you forgot to run the simulation that you setup."); + xbt_die("Bailing out to avoid that stop-before-start madness. Please fix your code."); + } + #if HAVE_SMPI if (SIMIX_process_count()>0){ if(smpi_process()->initialized()){ @@ -276,14 +284,6 @@ void SIMIX_clean() } #endif - smx_cleaned = 1; - XBT_DEBUG("SIMIX_clean called. Simulation's over."); - if (not simix_global->process_to_run.empty() && SIMIX_get_clock() <= 0.0) { - XBT_CRITICAL(" "); - XBT_CRITICAL("The time is still 0, and you still have processes ready to run."); - XBT_CRITICAL("It seems that you forgot to run the simulation that you setup."); - xbt_die("Bailing out to avoid that stop-before-start madness. Please fix your code."); - } /* Kill all processes (but maestro) */ SIMIX_process_killall(simix_global->maestro_process, 1); SIMIX_context_runall(); @@ -498,7 +498,7 @@ void SIMIX_run() /* If only daemon processes remain, cancel their actions, mark them to die and reschedule them */ if (simix_global->process_list.size() == simix_global->daemons.size()) for (auto const& dmon : simix_global->daemons) { - XBT_DEBUG("Kill %s", dmon->cname()); + XBT_DEBUG("Kill %s", dmon->getCname()); SIMIX_process_kill(dmon, simix_global->maestro_process); } } @@ -654,11 +654,11 @@ void SIMIX_display_process_status() synchro_description = "I/O"; XBT_INFO("Process %lu (%s@%s): waiting for %s synchro %p (%s) in state %d to finish", process->pid, - process->cname(), process->host->getCname(), synchro_description, process->waiting_synchro.get(), + process->getCname(), process->host->getCname(), synchro_description, process->waiting_synchro.get(), process->waiting_synchro->name.c_str(), (int)process->waiting_synchro->state); } else { - XBT_INFO("Process %lu (%s@%s)", process->pid, process->cname(), process->host->getCname()); + XBT_INFO("Process %lu (%s@%s)", process->pid, process->getCname(), process->host->getCname()); } } }