1/* 2 * Copyright (c) 2001-2005 The Regents of The University of Michigan 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer; --- 27 unchanged lines hidden (view full) --- 36#ifndef __SIM_OBJECT_HH__ 37#define __SIM_OBJECT_HH__ 38 39#include <map> 40#include <list> 41#include <vector> 42#include <iostream> 43 |
44#include "params/SimObject.hh" |
45#include "sim/serialize.hh" 46#include "sim/startup.hh" 47 48class BaseCPU; 49class Event; 50 51/* 52 * Abstract superclass for simulation objects. Represents things that 53 * correspond to physical components and can be specified via the 54 * config file (CPUs, caches, etc.). 55 */ 56class SimObject : public Serializable, protected StartupCallback 57{ 58 public: |
59 enum State { 60 Running, 61 Draining, 62 Drained 63 }; 64 |
65 private: 66 State state; 67 68 protected: |
69 void changeState(State new_state) { state = new_state; } 70 71 public: |
72 State getState() { return state; } 73 74 private: 75 typedef std::vector<SimObject *> SimObjectList; 76 77 // list of all instantiated simulation objects 78 static SimObjectList simObjectList; 79 |
80 protected: 81 const SimObjectParams *_params; 82 |
83 public: |
84 typedef SimObjectParams Params; 85 const Params *params() const { return _params; } 86 SimObject(const Params *_params); |
87 SimObject(const std::string &_name); |
88 virtual ~SimObject() {} 89 90 virtual const std::string name() const { return params()->name; } 91 92 // initialization pass of all objects. 93 // Gets invoked after construction, before unserialize. 94 virtual void init(); 95 static void initAll(); --- 38 unchanged lines hidden --- |