mips: cleanup ISA-specific code
[gem5.git] / src / cpu / cpuevent.hh
index 9dfae27cf3f29899230c947f85d6603055bc6bab..65f0e87e1c6cde7e5a4e7081b4308ad1a3d036fa 100644 (file)
 
 class ThreadContext;
 
-/** This class creates a global list of events that need a pointer to a
- * thread context. When a switchover takes place the events can be migrated
- * to the new thread context, otherwise you could have a wake timer interrupt
- * go off on a switched out cpu or other unfortunate events. This object MUST be
- * dynamically allocated to avoid it being deleted after a cpu switch happens.
- * */
+/**
+ * This class creates a global list of events that need a pointer to a
+ * thread context. When a switchover takes place the events can be
+ * migrated to the new thread context, otherwise you could have a wake
+ * timer interrupt go off on a switched out cpu or other unfortunate
+ * events. This object MUST be dynamically allocated to avoid it being
+ * deleted after a cpu switch happens.
+ */
 class CpuEvent : public Event
 {
-  private:
+  protected:
     /** type of global list of cpu events. */
     typedef std::vector<CpuEvent *> CpuEventList;
 
@@ -56,8 +58,8 @@ class CpuEvent : public Event
     ThreadContext *tc;
 
   public:
-    CpuEvent(EventQueue *q, ThreadContext *_tc, Priority p = Default_Pri)
-        : Event(q, p), tc(_tc)
+    CpuEvent(ThreadContext *_tc, Priority p = Default_Pri)
+        : Event(p), tc(_tc)
     { cpuEventList.push_back(this); }
 
     /** delete the cpu event from the global list. */
@@ -69,6 +71,7 @@ class CpuEvent : public Event
      */
     static void replaceThreadContext(ThreadContext *oldTc,
                                      ThreadContext *newTc);
+    ThreadContext* getTC() { return tc; }
 };
 
 template <class T, void (T::* F)(ThreadContext *tc)>
@@ -78,9 +81,8 @@ class CpuEventWrapper : public CpuEvent
     T *object;
 
   public:
-    CpuEventWrapper(T *obj, ThreadContext *_tc, EventQueue *q = &mainEventQueue,
-            Priority p = Default_Pri)
-        : CpuEvent(q, _tc, p), object(obj)
+    CpuEventWrapper(T *obj, ThreadContext *_tc, Priority p = Default_Pri)
+        : CpuEvent(_tc, p), object(obj)
     { }
     void process() { (object->*F)(tc); }
 };