From e5c9e9c4d439e1937db33a954ac231032dab69f2 Mon Sep 17 00:00:00 2001 From: Sean Wilson Date: Tue, 27 Jun 2017 16:22:24 -0500 Subject: kvm, mem: Refactor some Event subclasses into lambdas Change-Id: Ifafdcf4692d58a17f90e66ff8de8fa3e146c34bb Signed-off-by: Sean Wilson Reviewed-on: https://gem5-review.googlesource.com/3924 Reviewed-by: Jason Lowe-Power Reviewed-by: Andreas Sandberg Maintainer: Andreas Sandberg --- src/mem/external_slave.cc | 33 +++++++++++++-------------------- 1 file changed, 13 insertions(+), 20 deletions(-) (limited to 'src/mem/external_slave.cc') diff --git a/src/mem/external_slave.cc b/src/mem/external_slave.cc index 990e3561a..ac93e669c 100644 --- a/src/mem/external_slave.cc +++ b/src/mem/external_slave.cc @@ -52,17 +52,9 @@ class StubSlavePort : public ExternalSlave::Port { public: - class ResponseEvent : public Event - { - public: - StubSlavePort &owner; - - ResponseEvent(StubSlavePort &owner_) : owner(owner_) { } - - void process(); - }; + void processResponseEvent(); - ResponseEvent responseEvent; + EventFunctionWrapper responseEvent; /** Stub can handle a single request at a time. This will be * NULL when no packet is in flight */ @@ -75,7 +67,8 @@ class StubSlavePort : public ExternalSlave::Port StubSlavePort(const std::string &name_, ExternalSlave &owner_) : ExternalSlave::Port(name_, owner_), - responseEvent(*this), responsePacket(NULL), mustRetry(false) + responseEvent([this]{ processResponseEvent(); }, name()), + responsePacket(NULL), mustRetry(false) { } Tick recvAtomic(PacketPtr packet); @@ -123,18 +116,18 @@ StubSlavePort::recvFunctional(PacketPtr packet) } void -StubSlavePort::ResponseEvent::process() +StubSlavePort::processResponseEvent() { - owner.responsePacket->makeResponse(); - owner.responsePacket->headerDelay = 0; - owner.responsePacket->payloadDelay = 0; + responsePacket->makeResponse(); + responsePacket->headerDelay = 0; + responsePacket->payloadDelay = 0; - if (owner.sendTimingResp(owner.responsePacket)) { - owner.responsePacket = NULL; + if (sendTimingResp(responsePacket)) { + responsePacket = NULL; - if (owner.mustRetry) - owner.sendRetryReq(); - owner.mustRetry = false; + if (mustRetry) + sendRetryReq(); + mustRetry = false; } } -- cgit v1.2.3