AbstractController.hh revision 6876:a658c315512c
16906SBrad.Beckmann@amd.com
26906SBrad.Beckmann@amd.com#ifndef ABSTRACTCONTROLLER_H
36906SBrad.Beckmann@amd.com#define ABSTRACTCONTROLLER_H
46906SBrad.Beckmann@amd.com
56906SBrad.Beckmann@amd.com#include "sim/sim_object.hh"
66906SBrad.Beckmann@amd.com#include "params/RubyController.hh"
76906SBrad.Beckmann@amd.com
86906SBrad.Beckmann@amd.com#include "mem/ruby/common/Consumer.hh"
96906SBrad.Beckmann@amd.com#include "mem/protocol/MachineType.hh"
106906SBrad.Beckmann@amd.com#include "mem/ruby/common/Address.hh"
116906SBrad.Beckmann@amd.com
126906SBrad.Beckmann@amd.comclass MessageBuffer;
136906SBrad.Beckmann@amd.comclass Network;
146906SBrad.Beckmann@amd.com
156906SBrad.Beckmann@amd.comclass AbstractController : public SimObject, public Consumer {
166906SBrad.Beckmann@amd.compublic:
176906SBrad.Beckmann@amd.com    typedef RubyControllerParams Params;
186906SBrad.Beckmann@amd.com    AbstractController(const Params *p) : SimObject(p) {}
196906SBrad.Beckmann@amd.com  virtual void init(Network* net_ptr, const vector<string> & argv) = 0;
206906SBrad.Beckmann@amd.com
216906SBrad.Beckmann@amd.com  // returns the number of controllers created of the specific subtype
226906SBrad.Beckmann@amd.com  //  virtual int getNumberOfControllers() const = 0;
236906SBrad.Beckmann@amd.com  virtual MessageBuffer* getMandatoryQueue() const = 0;
246906SBrad.Beckmann@amd.com  virtual const int & getVersion() const = 0;
256906SBrad.Beckmann@amd.com  virtual const string toString() const = 0;  // returns text version of controller type
266906SBrad.Beckmann@amd.com  virtual const string getName() const = 0;   // return instance name
276906SBrad.Beckmann@amd.com  virtual const MachineType getMachineType() const = 0;
286906SBrad.Beckmann@amd.com  virtual void blockOnQueue(Address, MessageBuffer*) = 0;
296906SBrad.Beckmann@amd.com  virtual void unblock(Address) = 0;
308183Snilay@cs.wisc.edu
316906SBrad.Beckmann@amd.com  virtual void print(ostream & out) const = 0;
326906SBrad.Beckmann@amd.com  virtual void printStats(ostream & out) const = 0;
336906SBrad.Beckmann@amd.com  virtual void printConfig(ostream & out) const = 0;
349100SBrad.Beckmann@amd.com  virtual void wakeup() = 0;
3510529Smorr@cs.wisc.edu  //  virtual void dumpStats(ostream & out) = 0;
366906SBrad.Beckmann@amd.com  virtual void clearStats() = 0;
376906SBrad.Beckmann@amd.com
3811019Sjthestness@gmail.com};
396906SBrad.Beckmann@amd.com
4011052Sandreas.hansson@arm.com#endif
416906SBrad.Beckmann@amd.com