changeset 4f2ad221ae32 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=4f2ad221ae32
description:
MEM: Remove onRetryList from BusPort and rely on retryList
This patch removes the onRetryList field from the BusPort class and
entirely relies on the retryList which holds all ports that are
waiting to retry. The onRetryList field and the retryList were
previously used with overloaded functionalities and only one is really
needed (there were also checks to assert they held the same
information). After this patch the bus ports will be split into master
and slave ports and this simplifies that transition.
diffstat:
src/mem/bus.cc | 4 +---
src/mem/bus.hh | 33 +++++++++++----------------------
2 files changed, 12 insertions(+), 25 deletions(-)
diffs (91 lines):
diff -r 8f354c5a1634 -r 4f2ad221ae32 src/mem/bus.cc
--- a/src/mem/bus.cc Tue Feb 07 04:44:01 2012 -0800
+++ b/src/mem/bus.cc Thu Feb 09 13:06:27 2012 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011 ARM Limited
+ * Copyright (c) 2011-2012 ARM Limited
* All rights reserved
*
* The license below extends only to copyright in the software and shall
@@ -255,7 +255,6 @@
// Also take care of retries
if (inRetry) {
DPRINTF(Bus, "Remove retry from list %d\n", src);
- retryList.front()->onRetryList(false);
retryList.pop_front();
inRetry = false;
}
@@ -274,7 +273,6 @@
// If inRetry is still true, sendTiming wasn't called
if (inRetry)
{
- retryList.front()->onRetryList(false);
retryList.pop_front();
inRetry = false;
diff -r 8f354c5a1634 -r 4f2ad221ae32 src/mem/bus.hh
--- a/src/mem/bus.hh Tue Feb 07 04:44:01 2012 -0800
+++ b/src/mem/bus.hh Thu Feb 09 13:06:27 2012 -0500
@@ -71,8 +71,6 @@
of the interfaces connecting to the bus. */
class BusPort : public Port
{
- bool _onRetryList;
-
/** A pointer to the bus to which this port belongs. */
Bus *bus;
@@ -83,15 +81,9 @@
/** Constructor for the BusPort.*/
BusPort(const std::string &_name, Bus *_bus, int _id)
- : Port(_name, _bus), _onRetryList(false), bus(_bus), id(_id)
+ : Port(_name, _bus), bus(_bus), id(_id)
{ }
- bool onRetryList()
- { return _onRetryList; }
-
- void onRetryList(bool newVal)
- { _onRetryList = newVal; }
-
int getId() const { return id; }
/**
@@ -301,25 +293,22 @@
/** An array of pointers to ports that retry should be called on because
the
* original send failed for whatever reason.*/
- std::list<BusPort*> retryList;
+ std::list<Port*> retryList;
- void addToRetryList(BusPort * port)
+ void addToRetryList(Port* port)
{
if (!inRetry) {
- // The device wasn't retrying a packet, or wasn't at an appropriate
- // time.
- assert(!port->onRetryList());
- port->onRetryList(true);
+ // The device wasn't retrying a packet, or wasn't at an
+ // appropriate time.
retryList.push_back(port);
} else {
- if (port->onRetryList()) {
- // The device was retrying a packet. It didn't work, so we'll
leave
- // it at the head of the retry list.
- assert(port == retryList.front());
+ if (!retryList.empty() && port == retryList.front()) {
+ // The device was retrying a packet. It didn't work,
+ // so we'll leave it at the head of the retry list.
inRetry = false;
- }
- else {
- port->onRetryList(true);
+ } else {
+ // We are in retry, but not for this port, put it at
+ // the end.
retryList.push_back(port);
}
}
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev