AbstractController.hh (7039:bc0b6ea676b5) AbstractController.hh (7055:4e24742201d7)
1/*
2 * Copyright (c) 2009 Mark D. Hill and David A. Wood
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 15 unchanged lines hidden (view full) ---

24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29#ifndef __MEM_RUBY_SLICC_INTERFACE_ABSTRACTCONTROLLER_HH__
30#define __MEM_RUBY_SLICC_INTERFACE_ABSTRACTCONTROLLER_HH__
31
1/*
2 * Copyright (c) 2009 Mark D. Hill and David A. Wood
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 15 unchanged lines hidden (view full) ---

24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29#ifndef __MEM_RUBY_SLICC_INTERFACE_ABSTRACTCONTROLLER_HH__
30#define __MEM_RUBY_SLICC_INTERFACE_ABSTRACTCONTROLLER_HH__
31
32#include "sim/sim_object.hh"
33#include "params/RubyController.hh"
32#include <iostream>
33#include <string>
34
34
35#include "mem/ruby/common/Consumer.hh"
36#include "mem/protocol/MachineType.hh"
37#include "mem/ruby/common/Address.hh"
35#include "mem/protocol/MachineType.hh"
36#include "mem/ruby/common/Address.hh"
37#include "mem/ruby/common/Consumer.hh"
38#include "mem/ruby/network/Network.hh"
38#include "mem/ruby/network/Network.hh"
39#include "params/RubyController.hh"
40#include "sim/sim_object.hh"
39
40class MessageBuffer;
41class Network;
42
43class AbstractController : public SimObject, public Consumer
44{
45 public:
46 typedef RubyControllerParams Params;
47 AbstractController(const Params *p) : SimObject(p) {}
48
49 // returns the number of controllers created of the specific subtype
50 // virtual int getNumberOfControllers() const = 0;
51 virtual MessageBuffer* getMandatoryQueue() const = 0;
52 virtual const int & getVersion() const = 0;
41
42class MessageBuffer;
43class Network;
44
45class AbstractController : public SimObject, public Consumer
46{
47 public:
48 typedef RubyControllerParams Params;
49 AbstractController(const Params *p) : SimObject(p) {}
50
51 // returns the number of controllers created of the specific subtype
52 // virtual int getNumberOfControllers() const = 0;
53 virtual MessageBuffer* getMandatoryQueue() const = 0;
54 virtual const int & getVersion() const = 0;
53 virtual const string toString() const = 0; // returns text version of
54 // controller type
55 virtual const string getName() const = 0; // return instance name
55 virtual const std::string toString() const = 0; // returns text version of
56 // controller type
57 virtual const std::string getName() const = 0; // return instance name
56 virtual const MachineType getMachineType() const = 0;
57 virtual void blockOnQueue(Address, MessageBuffer*) = 0;
58 virtual void unblock(Address) = 0;
59 virtual void initNetworkPtr(Network* net_ptr) = 0;
60
58 virtual const MachineType getMachineType() const = 0;
59 virtual void blockOnQueue(Address, MessageBuffer*) = 0;
60 virtual void unblock(Address) = 0;
61 virtual void initNetworkPtr(Network* net_ptr) = 0;
62
61 virtual void print(ostream & out) const = 0;
62 virtual void printStats(ostream & out) const = 0;
63 virtual void printConfig(ostream & out) const = 0;
63 virtual void print(std::ostream & out) const = 0;
64 virtual void printStats(std::ostream & out) const = 0;
65 virtual void printConfig(std::ostream & out) const = 0;
64 virtual void wakeup() = 0;
66 virtual void wakeup() = 0;
65 // virtual void dumpStats(ostream & out) = 0;
67 // virtual void dumpStats(std::ostream & out) = 0;
66 virtual void clearStats() = 0;
67};
68
69#endif // __MEM_RUBY_SLICC_INTERFACE_ABSTRACTCONTROLLER_HH__
68 virtual void clearStats() = 0;
69};
70
71#endif // __MEM_RUBY_SLICC_INTERFACE_ABSTRACTCONTROLLER_HH__