AbstractController.hh revision 6876:a658c315512c
113481Sgiacomo.travaglini@arm.com 213481Sgiacomo.travaglini@arm.com#ifndef ABSTRACTCONTROLLER_H 313481Sgiacomo.travaglini@arm.com#define ABSTRACTCONTROLLER_H 413481Sgiacomo.travaglini@arm.com 513481Sgiacomo.travaglini@arm.com#include "sim/sim_object.hh" 613481Sgiacomo.travaglini@arm.com#include "params/RubyController.hh" 713481Sgiacomo.travaglini@arm.com 813481Sgiacomo.travaglini@arm.com#include "mem/ruby/common/Consumer.hh" 913481Sgiacomo.travaglini@arm.com#include "mem/protocol/MachineType.hh" 1013481Sgiacomo.travaglini@arm.com#include "mem/ruby/common/Address.hh" 1113481Sgiacomo.travaglini@arm.com 1213481Sgiacomo.travaglini@arm.comclass MessageBuffer; 1313481Sgiacomo.travaglini@arm.comclass Network; 1413481Sgiacomo.travaglini@arm.com 1513481Sgiacomo.travaglini@arm.comclass AbstractController : public SimObject, public Consumer { 1613481Sgiacomo.travaglini@arm.compublic: 1713481Sgiacomo.travaglini@arm.com typedef RubyControllerParams Params; 1813481Sgiacomo.travaglini@arm.com AbstractController(const Params *p) : SimObject(p) {} 1913481Sgiacomo.travaglini@arm.com virtual void init(Network* net_ptr, const vector<string> & argv) = 0; 2013481Sgiacomo.travaglini@arm.com 2113481Sgiacomo.travaglini@arm.com // returns the number of controllers created of the specific subtype 2213481Sgiacomo.travaglini@arm.com // virtual int getNumberOfControllers() const = 0; 2313481Sgiacomo.travaglini@arm.com virtual MessageBuffer* getMandatoryQueue() const = 0; 2413481Sgiacomo.travaglini@arm.com virtual const int & getVersion() const = 0; 2513481Sgiacomo.travaglini@arm.com virtual const string toString() const = 0; // returns text version of controller type 2613481Sgiacomo.travaglini@arm.com virtual const string getName() const = 0; // return instance name 2713481Sgiacomo.travaglini@arm.com virtual const MachineType getMachineType() const = 0; 2813481Sgiacomo.travaglini@arm.com virtual void blockOnQueue(Address, MessageBuffer*) = 0; 2913481Sgiacomo.travaglini@arm.com virtual void unblock(Address) = 0; 3013481Sgiacomo.travaglini@arm.com 3113481Sgiacomo.travaglini@arm.com virtual void print(ostream & out) const = 0; 3213481Sgiacomo.travaglini@arm.com virtual void printStats(ostream & out) const = 0; 3313481Sgiacomo.travaglini@arm.com virtual void printConfig(ostream & out) const = 0; 3413481Sgiacomo.travaglini@arm.com virtual void wakeup() = 0; 3513481Sgiacomo.travaglini@arm.com // virtual void dumpStats(ostream & out) = 0; 3613481Sgiacomo.travaglini@arm.com virtual void clearStats() = 0; 3713481Sgiacomo.travaglini@arm.com 3813481Sgiacomo.travaglini@arm.com}; 3913481Sgiacomo.travaglini@arm.com 4013481Sgiacomo.travaglini@arm.com#endif 41