#include "src/mc/mc_record.hpp"
#include "src/mc/mc_replay.hpp"
#include "src/simix/smx_private.hpp"
-#include "src/surf/StorageImpl.hpp"
#include "src/surf/xml/platf.hpp"
+#include "simgrid/kernel/resource/Model.hpp"
+
#if SIMGRID_HAVE_MC
#include "src/mc/remote/AppSide.hpp"
#endif
std::raise(signum);
}
-std::array<unsigned char, SIGSTKSZ> sigsegv_stack; /* alternate stack for SIGSEGV handler */
-
/**
* Install signal handler for SIGSEGV. Check that nobody has already installed
* its own handler. For example, the Java VM does this.
Timer* Timer::set(double date, xbt::Task<void()>&& callback)
{
auto* timer = new Timer(date, std::move(callback));
- timer->handle_ = simix_timers.emplace(std::make_pair(date, timer));
+ timer->handle_ = simix_timers().emplace(std::make_pair(date, timer));
return timer;
}
/** @brief cancels a timer that was added earlier */
void Timer::remove()
{
- simix_timers.erase(handle_);
+ simix_timers().erase(handle_);
delete this;
}
atexit(SIMIX_clean);
}
-int smx_cleaned = 0;
/**
* @ingroup SIMIX_API
* @brief Clean the SIMIX simulation
*/
void SIMIX_clean()
{
+ static bool smx_cleaned = false;
if (smx_cleaned)
return; // to avoid double cleaning by java and C
- smx_cleaned = 1;
+ smx_cleaned = true;
XBT_DEBUG("SIMIX_clean called. Simulation's over.");
if (not simix_global->actors_to_run.empty() && SIMIX_get_clock() <= 0.0) {
XBT_CRITICAL(" ");
/* Exit the SIMIX network module */
SIMIX_mailbox_exit();
- while (not simgrid::simix::simix_timers.empty()) {
- delete simgrid::simix::simix_timers.top().second;
- simgrid::simix::simix_timers.pop();
+ while (not simgrid::simix::simix_timers().empty()) {
+ delete simgrid::simix::simix_timers().top().second;
+ simgrid::simix::simix_timers().pop();
}
/* Free the remaining data structures */
simix_global->actors_to_run.clear();
static bool SIMIX_execute_timers()
{
bool result = false;
- while (not simgrid::simix::simix_timers.empty() && SIMIX_get_clock() >= simgrid::simix::simix_timers.top().first) {
+ while (not simgrid::simix::simix_timers().empty() &&
+ SIMIX_get_clock() >= simgrid::simix::simix_timers().top().first) {
result = true;
// FIXME: make the timers being real callbacks (i.e. provide dispatchers that read and expand the args)
- smx_timer_t timer = simgrid::simix::simix_timers.top().second;
- simgrid::simix::simix_timers.pop();
+ smx_timer_t timer = simgrid::simix::simix_timers().top().second;
+ simgrid::simix::simix_timers().pop();
timer->callback();
delete timer;
}
void SIMIX_run()
{
if (MC_record_replay_is_active()) {
- simgrid::mc::replay(MC_record_path);
+ simgrid::mc::replay(MC_record_path());
return;
}