Christian Menard has uploaded this change for review. (
https://gem5-review.googlesource.com/5441
Change subject: misc: Add function to check if a TLM target can receive a
timing req.
......................................................................
misc: Add function to check if a TLM target can receive a timing req.
This implements the new tryTiming interface of the base slave port.
This implementation allows a gem5 master to check if a TLM target module
is busy or if it can accept a timingReq.
Change-Id: I1265d2d41ed7f0878084d7be405f3f85e85cbb8f
---
M util/tlm/src/sc_slave_port.cc
M util/tlm/src/sc_slave_port.hh
2 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/util/tlm/src/sc_slave_port.cc b/util/tlm/src/sc_slave_port.cc
index dcf7c5d..4dfe47f 100644
--- a/util/tlm/src/sc_slave_port.cc
+++ b/util/tlm/src/sc_slave_port.cc
@@ -170,10 +170,10 @@
}
/**
- * Similar to TLM's non-blocking transport (AT)
+ * Check if a packet can be accepted in the current state.
*/
bool
-SCSlavePort::recvTimingReq(PacketPtr packet)
+SCSlavePort::tryTiming(PacketPtr packet)
{
CAUGHT_UP;
@@ -188,9 +188,19 @@
* required */
sc_assert(!needToSendRequestRetry);
- /* Remember if a request comes in while we're blocked so that a retry
- * can be sent to gem5 */
- if (blockingRequest) {
+ // we can only accept the packet if we are not blocked
+ return blockingRequest == nullptr;
+}
+
+/**
+ * Similar to TLM's non-blocking transport (AT)
+ */
+bool
+SCSlavePort::recvTimingReq(PacketPtr packet)
+{
+ if (!tryTiming(packet)) {
+ /* Remember if a request comes in while we're blocked so that a
retry
+ * can be sent to gem5 */
needToSendRequestRetry = true;
return false;
}
diff --git a/util/tlm/src/sc_slave_port.hh b/util/tlm/src/sc_slave_port.hh
index 6f8f6a6..ccd264c 100644
--- a/util/tlm/src/sc_slave_port.hh
+++ b/util/tlm/src/sc_slave_port.hh
@@ -98,6 +98,7 @@
/** The gem5 Port slave interface */
Tick recvAtomic(PacketPtr packet);
void recvFunctional(PacketPtr packet);
+ bool tryTiming(PacketPtr packet);
bool recvTimingReq(PacketPtr packet);
bool recvTimingSnoopResp(PacketPtr packet);
void recvRespRetry();
--
To view, visit https://gem5-review.googlesource.com/5441
To unsubscribe, or for help writing mail filters, visit
https://gem5-review.googlesource.com/settings
Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I1265d2d41ed7f0878084d7be405f3f85e85cbb8f
Gerrit-Change-Number: 5441
Gerrit-PatchSet: 1
Gerrit-Owner: Christian Menard <christian.men...@tu-dresden.de>
_______________________________________________
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev