ruby: Make MessageBuffers actually finite sized
authorJoel Hestness <jthestness@gmail.com>
Tue, 20 Dec 2016 17:38:24 +0000 (11:38 -0600)
committerJoel Hestness <jthestness@gmail.com>
Tue, 20 Dec 2016 17:38:24 +0000 (11:38 -0600)
commit3a656da1a64f08d5e4c755e94cefda5a4e985a50
tree945725f5b79c1124bb032c44f191e628ba4328c1
parent3eb979a8cedde55f4fe3c6cab4b5e591e664dd96
ruby: Make MessageBuffers actually finite sized

When Ruby controllers stall messages in MessageBuffers, the buffer moves those
messages off the priority heap and into a per-address stall map. When buffers
are finite-sized, the test areNSlotsAvailable() only checks the size of the
priority heap, but ignores the stall map, so the map is allowed to grow
unbounded if the controller stalls numerous messages. This patch fixes the
problem by tracking the stall map size and testing the total number of messages
in the buffer appropriately.
src/mem/ruby/network/MessageBuffer.cc
src/mem/ruby/network/MessageBuffer.hh