AbstractController.hh revision 6285:ce086eca1ede
14130Ssaidi@eecs.umich.edu
24130Ssaidi@eecs.umich.edu#ifndef ABSTRACTCONTROLLER_H
34130Ssaidi@eecs.umich.edu#define ABSTRACTCONTROLLER_H
44130Ssaidi@eecs.umich.edu
54130Ssaidi@eecs.umich.edu#include "mem/ruby/common/Consumer.hh"
64130Ssaidi@eecs.umich.edu#include "mem/protocol/MachineType.hh"
74130Ssaidi@eecs.umich.edu
84130Ssaidi@eecs.umich.educlass MessageBuffer;
94130Ssaidi@eecs.umich.educlass Network;
104130Ssaidi@eecs.umich.edu
114130Ssaidi@eecs.umich.educlass AbstractController : public Consumer {
124130Ssaidi@eecs.umich.edupublic:
134130Ssaidi@eecs.umich.edu  AbstractController() {}
144130Ssaidi@eecs.umich.edu  virtual void init(Network* net_ptr, const vector<string> & argv) = 0;
154130Ssaidi@eecs.umich.edu
164130Ssaidi@eecs.umich.edu  // returns the number of controllers created of the specific subtype
174130Ssaidi@eecs.umich.edu  //  virtual int getNumberOfControllers() const = 0;
184130Ssaidi@eecs.umich.edu  virtual MessageBuffer* getMandatoryQueue() const = 0;
194130Ssaidi@eecs.umich.edu  virtual const int & getVersion() const = 0;
204130Ssaidi@eecs.umich.edu  virtual const string toString() const = 0;  // returns text version of controller type
214130Ssaidi@eecs.umich.edu  virtual const string getName() const = 0;   // return instance name
224130Ssaidi@eecs.umich.edu  virtual const MachineType getMachineType() const = 0;
234130Ssaidi@eecs.umich.edu
244130Ssaidi@eecs.umich.edu  virtual void print(ostream & out) const = 0;
254130Ssaidi@eecs.umich.edu  virtual void printStats(ostream & out) const = 0;
264130Ssaidi@eecs.umich.edu  virtual void printConfig(ostream & out) const = 0;
274130Ssaidi@eecs.umich.edu  virtual void wakeup() = 0;
284130Ssaidi@eecs.umich.edu  //  virtual void dumpStats(ostream & out) = 0;
294130Ssaidi@eecs.umich.edu  virtual void clearStats() = 0;
304130Ssaidi@eecs.umich.edu
314130Ssaidi@eecs.umich.edu};
324130Ssaidi@eecs.umich.edu
334130Ssaidi@eecs.umich.edu#endif
344130Ssaidi@eecs.umich.edu