* modified or unmodified, in source code or in binary form.
*
* Copyright (c) 2002-2005 The Regents of The University of Michigan
+ * Copyright (c) 2013 Advanced Micro Devices, Inc.
+ * Copyright (c) 2013 Mark D. Hill and David A. Wood
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
#ifndef __SIM_SIM_EVENTS_HH__
#define __SIM_SIM_EVENTS_HH__
-#include "sim/eventq.hh"
+#include "sim/global_event.hh"
#include "sim/serialize.hh"
//
// Event to terminate simulation at a particular cycle/instruction
//
-class SimLoopExitEvent : public Event
+class GlobalSimLoopExitEvent : public GlobalEvent
{
protected:
// string explaining why we're terminating
public:
// non-scheduling version for createForUnserialize()
- SimLoopExitEvent();
- SimLoopExitEvent(const std::string &_cause, int c, Tick repeat = 0,
- bool serialize = false);
+ GlobalSimLoopExitEvent();
+ GlobalSimLoopExitEvent(Tick when, const std::string &_cause, int c,
+ Tick repeat = 0);
- std::string getCause() { return cause; }
- int getCode() { return code; }
+ const std::string getCause() const { return cause; }
+ int getCode() const { return code; }
void process(); // process event
virtual const char *description() const;
-
- virtual void serialize(std::ostream &os);
- virtual void unserialize(Checkpoint *cp, const std::string §ion);
- static Serializable *createForUnserialize(Checkpoint *cp,
- const std::string §ion);
};
-class CountedDrainEvent : public Event
+class LocalSimLoopExitEvent : public Event
{
- private:
- // Count of how many objects have not yet drained
- int count;
+ protected:
+ // string explaining why we're terminating
+ std::string cause;
+ int code;
+ Tick repeat;
public:
- CountedDrainEvent();
+ LocalSimLoopExitEvent();
+ LocalSimLoopExitEvent(const std::string &_cause, int c, Tick repeat = 0);
+
+ const std::string getCause() const { return cause; }
+ int getCode() const { return code; }
- void process();
+ void process() override; // process event
- void setCount(int _count) { count = _count; }
+ const char *description() const override;
- int getCount() { return count; }
+ void serialize(CheckpointOut &cp) const override;
+ void unserialize(CheckpointIn &cp) override;
+ static Serializable *createForUnserialize(CheckpointIn &cp,
+ const std::string §ion);
};
//
public:
CountedExitEvent(const std::string &_cause, int &_downCounter);
- void process(); // process event
+ void process() override; // process event
- virtual const char *description() const;
+ const char *description() const override;
};