mem: Add sanity check to packet queue size

This patch adds a basic check to ensure that the packet queue does not
grow absurdly large. The queue should only be used to store packets
that were delayed due to blocking from the neighbouring port, and not
for actual storage. Thus, a limit of 100 has been chosen for now
(which is already quite substantial).
This commit is contained in:
Andreas Hansson
2013-01-07 13:05:35 -05:00
parent ce5fc494e3
commit 852a7bcf92

View File

@@ -113,6 +113,13 @@ PacketQueue::schedSendTiming(PacketPtr pkt, Tick when, bool send_as_snoop)
// express snoops should never be queued
assert(!pkt->isExpressSnoop());
// add a very basic sanity check on the port to ensure the
// invisible buffer is not growing beyond reasonable limits
if (transmitList.size() > 100) {
panic("Packet queue %s has grown beyond 100 packets\n",
name());
}
// nothing on the list, or earlier than current front element,
// schedule an event
if (transmitList.empty() || when < transmitList.front().tick) {