| |
| #ifndef ABSTRACTCONTROLLER_H |
| #define ABSTRACTCONTROLLER_H |
| |
| #include "mem/ruby/common/Consumer.hh" |
| #include "mem/protocol/MachineType.hh" |
| #include "mem/ruby/common/Address.hh" |
| |
| class MessageBuffer; |
| class Network; |
| |
| class AbstractController : public Consumer { |
| public: |
| AbstractController() {} |
| virtual void init(Network* net_ptr, const vector<string> & argv) = 0; |
| |
| // returns the number of controllers created of the specific subtype |
| // virtual int getNumberOfControllers() const = 0; |
| virtual MessageBuffer* getMandatoryQueue() const = 0; |
| virtual const int & getVersion() const = 0; |
| virtual const string toString() const = 0; // returns text version of controller type |
| virtual const string getName() const = 0; // return instance name |
| virtual const MachineType getMachineType() const = 0; |
| virtual void set_atomic(Address addr) = 0; |
| virtual void clear_atomic(Address addr) = 0; |
| virtual void reset_atomics() = 0; |
| |
| virtual void print(ostream & out) const = 0; |
| virtual void printStats(ostream & out) const = 0; |
| virtual void printConfig(ostream & out) const = 0; |
| virtual void wakeup() = 0; |
| // virtual void dumpStats(ostream & out) = 0; |
| virtual void clearStats() = 0; |
| |
| }; |
| |
| #endif |