/*
- * Copyright (c) 2003 The Regents of The University of Michigan
+ * Copyright (c) 2001-2004 The Regents of The University of Michigan
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
#include <vector>
#include <iostream>
-#include "sim/param.hh"
#include "sim/serialize.hh"
+#include "sim/startup.hh"
/*
* Abstract superclass for simulation objects. Represents things that
* correspond to physical components and can be specified via the
* config file (CPUs, caches, etc.).
*/
-class SimObject : public Serializeable
+class SimObject : public Serializable, protected StartupCallback
{
+ protected:
+ std::string objName;
+
private:
friend class Serializer;
virtual ~SimObject() {}
+ virtual const std::string name() const { return objName; }
+
+ // initialization pass of all objects.
+ // Gets invoked after construction, before unserialize.
+ virtual void init();
+ static void initAll();
+
// register statistics for this object
virtual void regStats();
virtual void regFormulas();
-
- // print extra results for this object not covered by registered
- // statistics (called at end of simulation)
- virtual void printExtraOutput(std::ostream&);
+ virtual void resetStats();
// static: call reg_stats on all SimObjects
static void regAllStats();
- // static: call printExtraOutput on all SimObjects
- static void printAllExtraOutput(std::ostream&);
+ // static: call resetStats on all SimObjects
+ static void resetAllStats();
+
+ // static: call nameOut() & serialize() on all SimObjects
+ static void serializeAll(std::ostream &);
+
+#ifdef DEBUG
+ public:
+ bool doDebugBreak;
+ static void debugObjectBreak(const std::string &objs);
+#endif
+
+ public:
+ bool doRecordEvent;
+ void recordEvent(const std::string &stat);
};
#endif // __SIM_OBJECT_HH__