#include "sim/eventq.hh"
#include "sim/sim_events.hh"
#include "sim/sim_exit.hh"
-#include "sim/startup.hh"
#include "sim/stats.hh"
using namespace std;
// but if you are doing this on intervals, don't forget to make another
if (repeat) {
assert(getFlags(IsMainQueue));
- mainEventQueue.schedule(this, curTick + repeat);
+ mainEventQueue.schedule(this, curTick() + repeat);
}
}
}
void
-exitSimLoop(const std::string &message, int exit_code)
+exitSimLoop(const std::string &message, int exit_code, Tick when, Tick repeat)
{
- Event *event = new SimLoopExitEvent(message, exit_code);
- mainEventQueue.schedule(event, curTick);
+ Event *event = new SimLoopExitEvent(message, exit_code, repeat);
+ mainEventQueue.schedule(event, when);
}
CountedDrainEvent::CountedDrainEvent()
- : SimLoopExitEvent("Finished drain", 0), count(0)
+ : count(0)
{ }
void
CountedDrainEvent::process()
{
if (--count == 0)
- exitSimLoop(cause, code);
+ exitSimLoop("Finished drain", 0);
}
//
{
return "counted exit";
}
-
-CheckSwapEvent::CheckSwapEvent(int ival)
- : interval(ival)
-{
- mainEventQueue.schedule(this, curTick + interval);
-}
-
-void
-CheckSwapEvent::process()
-{
- /* Check the amount of free swap space */
- long swap;
-
- /* returns free swap in KBytes */
- swap = procInfo("/proc/meminfo", "SwapFree:");
-
- if (swap < 1000)
- ccprintf(cerr, "\a\a\aWarning! Swap space is low (%d)\n", swap);
-
- if (swap < 100) {
- cerr << "\a\aAborting Simulation! Inadequate swap space!\n\n";
- exitSimLoop("Lack of swap space");
- }
-
- assert(getFlags(IsMainQueue));
- mainEventQueue.schedule(this, curTick + interval);
-}
-
-const char *
-CheckSwapEvent::description() const
-{
- return "check swap";
-}