syscalls: fix latent brk/obreak bug.
[gem5.git] / src / sim / sim_object.hh
index 2e99a85bfde28b9ffa06ed02b0cefef7660a019f..d6d08f2550bdf1cc8d93645f8b1cd528c675e4d8 100644 (file)
 #ifndef __SIM_OBJECT_HH__
 #define __SIM_OBJECT_HH__
 
-#include <map>
+#include <iostream>
 #include <list>
+#include <map>
+#include <string>
 #include <vector>
-#include <iostream>
 
 #include "params/SimObject.hh"
+#include "sim/eventq.hh"
 #include "sim/serialize.hh"
 #include "sim/startup.hh"
 
@@ -53,7 +55,8 @@ class Event;
  * correspond to physical components and can be specified via the
  * config file (CPUs, caches, etc.).
  */
-class SimObject : public Serializable, protected StartupCallback
+class SimObject
+    : public EventManager, public Serializable, protected StartupCallback
 {
   public:
     enum State {
@@ -84,9 +87,10 @@ class SimObject : public Serializable, protected StartupCallback
     typedef SimObjectParams Params;
     const Params *params() const { return _params; }
     SimObject(const Params *_params);
-    SimObject(const std::string &_name);
     virtual ~SimObject() {}
 
+  public:
+
     virtual const std::string name() const { return params()->name; }
 
     // initialization pass of all objects.
@@ -126,6 +130,13 @@ class SimObject : public Serializable, protected StartupCallback
     static void debugObjectBreak(const std::string &objs);
 #endif
 
+    /**
+     * Find the SimObject with the given name and return a pointer to
+     * it.  Primarily used for interactive debugging.  Argument is
+     * char* rather than std::string to make it callable from gdb.
+     */
+    static SimObject *find(const char *name);
+
   public:
     void recordEvent(const std::string &stat);
 };