AbstractController.hh (10311:ad9c042dce54) AbstractController.hh (10522:13312d6e1caf)
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;

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

62 void initNetworkPtr(Network* net_ptr) { m_net_ptr = net_ptr; }
63
64 // return instance name
65 void blockOnQueue(Address, MessageBuffer*);
66 void unblock(Address);
67
68 virtual MessageBuffer* getMandatoryQueue() const = 0;
69 virtual AccessPermission getAccessPermission(const Address& addr) = 0;
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;

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

62 void initNetworkPtr(Network* net_ptr) { m_net_ptr = net_ptr; }
63
64 // return instance name
65 void blockOnQueue(Address, MessageBuffer*);
66 void unblock(Address);
67
68 virtual MessageBuffer* getMandatoryQueue() const = 0;
69 virtual AccessPermission getAccessPermission(const Address& addr) = 0;
70 virtual DataBlock& getDataBlock(const Address& addr) = 0;
71
72 virtual void print(std::ostream & out) const = 0;
73 virtual void wakeup() = 0;
74 virtual void resetStats() = 0;
75 virtual void regStats();
76
77 virtual void recordCacheTrace(int cntrl, CacheRecorder* tr) = 0;
78 virtual Sequencer* getSequencer() const = 0;
79
80 //! These functions are used by ruby system to read/write the message
81 //! queues that exist with in the controller.
82 //! The boolean return value indicates if the read was performed
83 //! successfully.
84 virtual bool functionalReadBuffers(PacketPtr&) = 0;
70
71 virtual void print(std::ostream & out) const = 0;
72 virtual void wakeup() = 0;
73 virtual void resetStats() = 0;
74 virtual void regStats();
75
76 virtual void recordCacheTrace(int cntrl, CacheRecorder* tr) = 0;
77 virtual Sequencer* getSequencer() const = 0;
78
79 //! These functions are used by ruby system to read/write the message
80 //! queues that exist with in the controller.
81 //! The boolean return value indicates if the read was performed
82 //! successfully.
83 virtual bool functionalReadBuffers(PacketPtr&) = 0;
84 virtual void functionalRead(const Address &addr, PacketPtr) = 0;
85 //! The return value indicates the number of messages written with the
86 //! data from the packet.
87 virtual uint32_t functionalWriteBuffers(PacketPtr&) = 0;
85 //! The return value indicates the number of messages written with the
86 //! data from the packet.
87 virtual uint32_t functionalWriteBuffers(PacketPtr&) = 0;
88 virtual int functionalWrite(const Address &addr, PacketPtr) = 0;
88
89 //! Function for enqueuing a prefetch request
90 virtual void enqueuePrefetch(const Address&, const RubyRequestType&)
91 { fatal("Prefetches not implemented!");}
92
93 //! Function for collating statistics from all the controllers of this
94 //! particular type. This function should only be called from the
95 //! version 0 of this controller type.

--- 68 unchanged lines hidden ---
89
90 //! Function for enqueuing a prefetch request
91 virtual void enqueuePrefetch(const Address&, const RubyRequestType&)
92 { fatal("Prefetches not implemented!");}
93
94 //! Function for collating statistics from all the controllers of this
95 //! particular type. This function should only be called from the
96 //! version 0 of this controller type.

--- 68 unchanged lines hidden ---