eventq: add a function for replacing head of the queue
authorNilay Vaish <nilay@cs.wisc.edu>
Thu, 5 Jan 2012 17:02:56 +0000 (11:02 -0600)
committerNilay Vaish <nilay@cs.wisc.edu>
Thu, 5 Jan 2012 17:02:56 +0000 (11:02 -0600)
This patch adds a function for replacing the event at the head of the queue
with another event. This helps in running a different set of events. Events
already scheduled can processed by replacing the original head event back.
This function has been specifically added to support cache warmup and
cooldown required for creating and restoring checkpoints.

--HG--
extra : rebase_source : ed6e2905720b6bfdefd020fab76235ccf33d28d1

src/sim/eventq.cc
src/sim/eventq.hh

index 78524fe51fc3492986db8d205b31856d5864adba..b389efcf2f972f7e5169ebeb24c1db6611aed4f1 100644 (file)
@@ -373,6 +373,14 @@ EventQueue::debugVerify() const
     return true;
 }
 
+Event*
+EventQueue::replaceHead(Event* s)
+{
+    Event* t = head;
+    head = s;
+    return t;
+}
+
 void
 dumpMainQueue()
 {
index 1509d05a5e379b1fb7ad66581ca2044573efc1d2..6dc25e76029c0c09ff7e842436c24d6dcbe15dc8 100644 (file)
@@ -408,6 +408,16 @@ class EventQueue : public Serializable
 
     bool debugVerify() const;
 
+    /**
+     *  function for replacing the head of the event queue, so that a
+     *  different set of events can run without disturbing events that have
+     *  already been scheduled. Already scheduled events can be processed
+     *  by replacing the original head back.
+     *  USING THIS FUNCTION CAN BE DANGEROUS TO THE HEALTH OF THE SIMULATOR.
+     *  NOT RECOMMENDED FOR USE.
+     */
+    Event* replaceHead(Event* s);
+
 #ifndef SWIG
     virtual void serialize(std::ostream &os);
     virtual void unserialize(Checkpoint *cp, const std::string &section);