diff options
author | Nilay Vaish <nilay@cs.wisc.edu> | 2013-03-22 15:53:24 -0500 |
---|---|---|
committer | Nilay Vaish <nilay@cs.wisc.edu> | 2013-03-22 15:53:24 -0500 |
commit | 8573a69d8f7bf7b3f074e3e0ac64994801c551be (patch) | |
tree | 825b13a2bda66152fda68c5f463f627a4ba2c174 /src/mem/slicc/symbols | |
parent | eccc86e8095995d49326a9fffc3a1088b97b03fc (diff) | |
download | gem5-8573a69d8f7bf7b3f074e3e0ac64994801c551be.tar.xz |
ruby: move stall and wakeup functions to AbstractController
These functions are currently implemented in one of the files related to Slicc.
Since these are purely C++ functions, they are better suited to be in the base
class.
Diffstat (limited to 'src/mem/slicc/symbols')
-rw-r--r-- | src/mem/slicc/symbols/StateMachine.py | 67 |
1 files changed, 0 insertions, 67 deletions
diff --git a/src/mem/slicc/symbols/StateMachine.py b/src/mem/slicc/symbols/StateMachine.py index 3f54a1cdb..3618563fd 100644 --- a/src/mem/slicc/symbols/StateMachine.py +++ b/src/mem/slicc/symbols/StateMachine.py @@ -262,9 +262,6 @@ class $c_ident : public AbstractController const int & getVersion() const; const std::string toString() const; const std::string getName() const; - void stallBuffer(MessageBuffer* buf, Address addr); - void wakeUpBuffers(Address addr); - void wakeUpAllBuffers(); void initNetworkPtr(Network* net_ptr) { m_net_ptr = net_ptr; } void print(std::ostream& out) const; void wakeup(); @@ -749,70 +746,6 @@ $c_ident::getName() const } void -$c_ident::stallBuffer(MessageBuffer* buf, Address addr) -{ - if (m_waiting_buffers.count(addr) == 0) { - MsgVecType* msgVec = new MsgVecType; - msgVec->resize(m_max_in_port_rank, NULL); - m_waiting_buffers[addr] = msgVec; - } - (*(m_waiting_buffers[addr]))[m_cur_in_port_rank] = buf; -} - -void -$c_ident::wakeUpBuffers(Address addr) -{ - if (m_waiting_buffers.count(addr) > 0) { - // - // Wake up all possible lower rank (i.e. lower priority) buffers that could - // be waiting on this message. - // - for (int in_port_rank = m_cur_in_port_rank - 1; - in_port_rank >= 0; - in_port_rank--) { - if ((*(m_waiting_buffers[addr]))[in_port_rank] != NULL) { - (*(m_waiting_buffers[addr]))[in_port_rank]->reanalyzeMessages(addr); - } - } - delete m_waiting_buffers[addr]; - m_waiting_buffers.erase(addr); - } -} - -void -$c_ident::wakeUpAllBuffers() -{ - // - // Wake up all possible buffers that could be waiting on any message. - // - - std::vector<MsgVecType*> wokeUpMsgVecs; - - if(m_waiting_buffers.size() > 0) { - for (WaitingBufType::iterator buf_iter = m_waiting_buffers.begin(); - buf_iter != m_waiting_buffers.end(); - ++buf_iter) { - for (MsgVecType::iterator vec_iter = buf_iter->second->begin(); - vec_iter != buf_iter->second->end(); - ++vec_iter) { - if (*vec_iter != NULL) { - (*vec_iter)->reanalyzeAllMessages(); - } - } - wokeUpMsgVecs.push_back(buf_iter->second); - } - - for (std::vector<MsgVecType*>::iterator wb_iter = wokeUpMsgVecs.begin(); - wb_iter != wokeUpMsgVecs.end(); - ++wb_iter) { - delete (*wb_iter); - } - - m_waiting_buffers.clear(); - } -} - -void $c_ident::blockOnQueue(Address addr, MessageBuffer* port) { m_is_blocking = true; |