m_waiting_buffers.clear();
}
}
+
+void
+AbstractController::blockOnQueue(Address addr, MessageBuffer* port)
+{
+ m_is_blocking = true;
+ m_block_map[addr] = port;
+}
+
+void
+AbstractController::unblock(Address addr)
+{
+ m_block_map.erase(addr);
+ if (m_block_map.size() == 0) {
+ m_is_blocking = false;
+ }
+}
void init();
const Params *params() const { return (const Params *)_params; }
+ const int & getVersion() const { return m_version; }
+ void initNetworkPtr(Network* net_ptr) { m_net_ptr = net_ptr; }
+
+ // return instance name
+ const std::string getName() const { return m_name; }
+ void blockOnQueue(Address, MessageBuffer*);
+ void unblock(Address);
+
virtual MessageBuffer* getMandatoryQueue() const = 0;
- virtual const int & getVersion() const = 0;
virtual const std::string toString() const = 0; // returns text version of
// controller type
- virtual const std::string getName() const = 0; // return instance name
- virtual void blockOnQueue(Address, MessageBuffer*) = 0;
- virtual void unblock(Address) = 0;
- virtual void initNetworkPtr(Network* net_ptr) = 0;
virtual AccessPermission getAccessPermission(const Address& addr) = 0;
virtual DataBlock& getDataBlock(const Address& addr) = 0;
static int getNumControllers();
void init();
MessageBuffer* getMandatoryQueue() const;
- const int & getVersion() const;
const std::string toString() const;
- const std::string getName() const;
- void initNetworkPtr(Network* net_ptr) { m_net_ptr = net_ptr; }
void print(std::ostream& out) const;
void wakeup();
void regStats();
void collateStats();
- void blockOnQueue(Address addr, MessageBuffer* port);
- void unblock(Address addr);
void recordCacheTrace(int cntrl, CacheRecorder* tr);
Sequencer* getSequencer() const;
return $seq_ident;
}
-const int &
-$c_ident::getVersion() const
-{
- return m_version;
-}
-
const string
$c_ident::toString() const
{
return "$c_ident";
}
-const string
-$c_ident::getName() const
-{
- return m_name;
-}
-
-void
-$c_ident::blockOnQueue(Address addr, MessageBuffer* port)
-{
- m_is_blocking = true;
- m_block_map[addr] = port;
-}
-
-void
-$c_ident::unblock(Address addr)
-{
- m_block_map.erase(addr);
- if (m_block_map.size() == 0) {
- m_is_blocking = false;
- }
-}
-
void
$c_ident::print(ostream& out) const
{