diff options
Diffstat (limited to 'src/mem/ruby/network/MessageBuffer.cc')
-rw-r--r-- | src/mem/ruby/network/MessageBuffer.cc | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/mem/ruby/network/MessageBuffer.cc b/src/mem/ruby/network/MessageBuffer.cc index 573d8833a..67bc7f72d 100644 --- a/src/mem/ruby/network/MessageBuffer.cc +++ b/src/mem/ruby/network/MessageBuffer.cc @@ -60,6 +60,8 @@ MessageBuffer::MessageBuffer(const Params *p) m_buf_msgs = 0; m_stall_time = 0; + + m_dequeue_callback = nullptr; } unsigned int @@ -241,10 +243,27 @@ MessageBuffer::dequeue(Tick current_time, bool decrement_messages) m_buf_msgs--; } + // if a dequeue callback was requested, call it now + if (m_dequeue_callback) { + m_dequeue_callback(); + } + return delay; } void +MessageBuffer::registerDequeueCallback(std::function<void()> callback) +{ + m_dequeue_callback = callback; +} + +void +MessageBuffer::unregisterDequeueCallback() +{ + m_dequeue_callback = nullptr; +} + +void MessageBuffer::clear() { m_prio_heap.clear(); |