AbstractController.hh revision 6285
12810SN/A
211375Sandreas.hansson@arm.com#ifndef ABSTRACTCONTROLLER_H
38856Sandreas.hansson@arm.com#define ABSTRACTCONTROLLER_H
48856Sandreas.hansson@arm.com
58856Sandreas.hansson@arm.com#include "mem/ruby/common/Consumer.hh"
68856Sandreas.hansson@arm.com#include "mem/protocol/MachineType.hh"
78856Sandreas.hansson@arm.com
88856Sandreas.hansson@arm.comclass MessageBuffer;
98856Sandreas.hansson@arm.comclass Network;
108856Sandreas.hansson@arm.com
118856Sandreas.hansson@arm.comclass AbstractController : public Consumer {
128856Sandreas.hansson@arm.compublic:
138856Sandreas.hansson@arm.com  AbstractController() {}
142810SN/A  virtual void init(Network* net_ptr, const vector<string> & argv) = 0;
152810SN/A
162810SN/A  // returns the number of controllers created of the specific subtype
172810SN/A  //  virtual int getNumberOfControllers() const = 0;
182810SN/A  virtual MessageBuffer* getMandatoryQueue() const = 0;
192810SN/A  virtual const int & getVersion() const = 0;
202810SN/A  virtual const string toString() const = 0;  // returns text version of controller type
212810SN/A  virtual const string getName() const = 0;   // return instance name
222810SN/A  virtual const MachineType getMachineType() const = 0;
232810SN/A
242810SN/A  virtual void print(ostream & out) const = 0;
252810SN/A  virtual void printStats(ostream & out) const = 0;
262810SN/A  virtual void printConfig(ostream & out) const = 0;
272810SN/A  virtual void wakeup() = 0;
282810SN/A  //  virtual void dumpStats(ostream & out) = 0;
292810SN/A  virtual void clearStats() = 0;
302810SN/A
312810SN/A};
322810SN/A
332810SN/A#endif
342810SN/A