#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.h"
-#include "xbt/ex.h" /* ex_backtrace_display */
+#include "xbt/ex.h" /* ex_backtrace_display */
#include "mc/mc.h"
#include "simgrid/sg_config.h"
#include "src/kernel/activity/SynchroRaw.hpp"
#if SIMGRID_HAVE_MC
-#include "src/mc/mc_private.h"
+#include "src/mc/mc_private.hpp"
#include "src/mc/remote/Client.hpp"
#include "src/mc/remote/mc_protocol.h"
#endif
-#include "src/mc/mc_record.h"
+#include "src/mc/mc_record.hpp"
#if HAVE_SMPI
-#include "src/smpi/include/private.h"
#include "src/smpi/include/private.hpp"
#endif
static xbt_heap_t simix_timers = nullptr;
/** @brief Timer datatype */
-typedef struct s_smx_timer {
+class s_smx_timer_t {
double date = 0.0;
- simgrid::xbt::Task<void()> callback;
+ s_smx_timer_t() = default;
- s_smx_timer()=default;
- s_smx_timer(double date, simgrid::xbt::Task<void()> callback) : date(date), callback(std::move(callback)) {}
-} s_smx_timer_t;
+public:
+ simgrid::xbt::Task<void()> callback;
+ double getDate() { return date; }
+ s_smx_timer_t(double date, simgrid::xbt::Task<void()> callback) : date(date), callback(std::move(callback)) {}
+};
void (*SMPI_switch_data_segment)(int) = nullptr;
fprintf(stderr, "Access violation detected.\n"
"This probably comes from a programming error in your code, or from a stack\n"
"overflow. If you are certain of your code, try increasing the stack size\n"
- " --cfg=contexts/stack-size=XXX (current size is %d KiB).\n"
+ " --cfg=contexts/stack-size=XXX (current size is %u KiB).\n"
"\n"
"If it does not help, this may have one of the following causes:\n"
"a bug in SimGrid, a bug in the OS or a bug in a third-party libraries.\n"
});
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());
});
}
}
/* Kill all processes (but maestro) */
SIMIX_process_killall(simix_global->maestro_process, 1);
+ SIMIX_context_runall();
+ SIMIX_process_empty_trash();
/* Exit the SIMIX network module */
SIMIX_mailbox_exit();
/* 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 (const auto& dmon : simix_global->daemons) {
- XBT_DEBUG("Kill %s", dmon->cname());
+ for (auto const& dmon : simix_global->daemons) {
+ XBT_DEBUG("Kill %s", dmon->getCname());
SIMIX_process_kill(dmon, simix_global->maestro_process);
}
}
time = SIMIX_timer_next();
- if (time > -1.0 || simix_global->process_list.empty() == false) {
+ if (time > -1.0 || not simix_global->process_list.empty()) {
XBT_DEBUG("Calling surf_solve");
time = surf_solve(time);
XBT_DEBUG("Moving time ahead : %g", time);
} while (time > -1.0 || not simix_global->process_to_run.empty());
- if (simix_global->process_list.size() != 0) {
+ if (not simix_global->process_list.empty()) {
TRACE_end();
/** @brief cancels a timer that was added earlier */
void SIMIX_timer_remove(smx_timer_t timer) {
- xbt_heap_rm_elm(simix_timers, timer, timer->date);
+ delete static_cast<smx_timer_t>(xbt_heap_rm_elm(simix_timers, timer, timer->getDate()));
}
/** @brief Returns the date at which the timer will trigger (or 0 if nullptr timer) */
double SIMIX_timer_get_date(smx_timer_t timer) {
- return timer?timer->date:0;
+ return timer ? timer->getDate() : 0;
}
/**
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());
}
}
}