diff options
author | Steve Reinhardt <stever@eecs.umich.edu> | 2007-02-05 22:05:00 -0800 |
---|---|---|
committer | Steve Reinhardt <stever@eecs.umich.edu> | 2007-02-05 22:05:00 -0800 |
commit | f5a803f56e6057a9d908c47aa05fbbfb98a575b5 (patch) | |
tree | 59f9760a26a5aace26d815e502468585fa25a4f0 | |
parent | 17cbfe55fdd80ccd4c9c33ade3b636ba793def56 (diff) | |
download | gem5-f5a803f56e6057a9d908c47aa05fbbfb98a575b5.tar.xz |
Use an instance counter to give Events repeatable IDs
in debugging mode (especially valuable for tracediff).
--HG--
extra : convert_revision : 227434a06b5271a8300f2f6861bd06c4ac19e6c4
-rw-r--r-- | src/sim/eventq.cc | 2 | ||||
-rw-r--r-- | src/sim/eventq.hh | 19 |
2 files changed, 21 insertions, 0 deletions
diff --git a/src/sim/eventq.cc b/src/sim/eventq.cc index 6ae838897..de3050d8c 100644 --- a/src/sim/eventq.cc +++ b/src/sim/eventq.cc @@ -53,6 +53,8 @@ using namespace std; // EventQueue mainEventQueue("MainEventQueue"); +Counter Event::instanceCounter = 0; + void EventQueue::insert(Event *event) { diff --git a/src/sim/eventq.hh b/src/sim/eventq.hh index fa65b08af..1aeb26e25 100644 --- a/src/sim/eventq.hh +++ b/src/sim/eventq.hh @@ -75,6 +75,18 @@ class Event : public Serializable, public FastAlloc friend class EventQueue; private: + +#ifndef NDEBUG + /// Global counter to generate unique IDs for Event instances + static Counter instanceCounter; + + /// This event's unique ID. We can also use pointer values for + /// this but they're not consistent across runs making debugging + /// more difficult. Thus we use a global counter value when + /// debugging. + Counter instanceId; +#endif // NDEBUG + /// queue to which this event belongs (though it may or may not be /// scheduled on this queue yet) EventQueue *queue; @@ -173,12 +185,19 @@ class Event : public Serializable, public FastAlloc #endif annotated_value(0) { +#ifndef NDEBUG + instanceId = ++instanceCounter; +#endif } ~Event() {} virtual const std::string name() const { +#ifndef NDEBUG + return csprintf("Event_%d", instanceId); +#else return csprintf("Event_%x", (uintptr_t)this); +#endif } /// Determine if the current event is scheduled |