sim_object.hh (4076:e1c56b6b3072) | sim_object.hh (4762:c94e103c83ad) |
---|---|
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 | 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" |
|
44#include "sim/serialize.hh" 45#include "sim/startup.hh" 46 47class BaseCPU; 48class Event; 49 50/* 51 * Abstract superclass for simulation objects. Represents things that 52 * correspond to physical components and can be specified via the 53 * config file (CPUs, caches, etc.). 54 */ 55class SimObject : public Serializable, protected StartupCallback 56{ 57 public: | 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: |
58 struct Params { 59 std::string name; 60 }; 61 | |
62 enum State { 63 Running, 64 Draining, 65 Drained 66 }; 67 | 59 enum State { 60 Running, 61 Draining, 62 Drained 63 }; 64 |
68 enum MemoryMode { 69 Invalid=0, 70 Atomic, 71 Timing 72 }; 73 | |
74 private: 75 State state; 76 77 protected: | 65 private: 66 State state; 67 68 protected: |
78 Params *_params; 79 | |
80 void changeState(State new_state) { state = new_state; } 81 82 public: | 69 void changeState(State new_state) { state = new_state; } 70 71 public: |
83 const Params *params() const { return _params; } 84 | |
85 State getState() { return state; } 86 87 private: 88 typedef std::vector<SimObject *> SimObjectList; 89 90 // list of all instantiated simulation objects 91 static SimObjectList simObjectList; 92 | 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 |
|
93 public: | 83 public: |
94 SimObject(Params *_params); | 84 typedef SimObjectParams Params; 85 const Params *params() const { return _params; } 86 SimObject(const Params *_params); |
95 SimObject(const std::string &_name); | 87 SimObject(const std::string &_name); |
96 | |
97 virtual ~SimObject() {} 98 99 virtual const std::string name() const { return params()->name; } 100 101 // initialization pass of all objects. 102 // Gets invoked after construction, before unserialize. 103 virtual void init(); 104 static void initAll(); --- 38 unchanged lines hidden --- | 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 --- |