diff options
Diffstat (limited to 'src/sim')
-rw-r--r-- | src/sim/sim_object.cc | 16 | ||||
-rw-r--r-- | src/sim/sim_object.hh | 7 |
2 files changed, 23 insertions, 0 deletions
diff --git a/src/sim/sim_object.cc b/src/sim/sim_object.cc index 907f015dc..a835aee5b 100644 --- a/src/sim/sim_object.cc +++ b/src/sim/sim_object.cc @@ -264,3 +264,19 @@ SimObject::takeOverFrom(BaseCPU *cpu) { panic("Unimplemented!"); } + + +SimObject * +SimObject::find(const char *name) +{ + SimObjectList::const_iterator i = simObjectList.begin(); + SimObjectList::const_iterator end = simObjectList.end(); + + for (; i != end; ++i) { + SimObject *obj = *i; + if (obj->name() == name) + return obj; + } + + return NULL; +} diff --git a/src/sim/sim_object.hh b/src/sim/sim_object.hh index b70f1d5d3..20a35a32b 100644 --- a/src/sim/sim_object.hh +++ b/src/sim/sim_object.hh @@ -131,6 +131,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. Priarily 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); }; |