summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Wilson <spwilson2@wisc.edu>2017-06-28 11:18:55 -0500
committerSean Wilson <spwilson2@wisc.edu>2017-07-12 20:07:05 +0000
commitea57eee60cca92277f9f8d1f2abf501ca158be2e (patch)
tree385d547c13e01c4df67d4de0fe836f57ae6abb17
parent60adacb5716d91b9838fbb5e2b0d3e766c1cfdb1 (diff)
downloadgem5-ea57eee60cca92277f9f8d1f2abf501ca158be2e.tar.xz
net: Refactor some Event subclasses to lambdas
Change-Id: I0e23f1529b26c36d749bf5211ee8623744d0b10f Signed-off-by: Sean Wilson <spwilson2@wisc.edu> Reviewed-on: https://gem5-review.googlesource.com/3927 Maintainer: Jason Lowe-Power <jason@lowepower.com> Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
-rw-r--r--src/dev/net/etherbus.cc3
-rw-r--r--src/dev/net/etherbus.hh14
-rw-r--r--src/dev/net/ethertap.cc3
-rw-r--r--src/dev/net/ethertap.hh16
4 files changed, 6 insertions, 30 deletions
diff --git a/src/dev/net/etherbus.cc b/src/dev/net/etherbus.cc
index 7ccb8a4ac..243e27b18 100644
--- a/src/dev/net/etherbus.cc
+++ b/src/dev/net/etherbus.cc
@@ -52,7 +52,8 @@ using namespace std;
EtherBus::EtherBus(const Params *p)
: EtherObject(p), ticksPerByte(p->speed), loopback(p->loopback),
- event(this), sender(0), dump(p->dump)
+ event([this]{ txDone(); }, "ethernet bus completion"),
+ sender(0), dump(p->dump)
{
}
diff --git a/src/dev/net/etherbus.hh b/src/dev/net/etherbus.hh
index 7395c28d8..1b264533c 100644
--- a/src/dev/net/etherbus.hh
+++ b/src/dev/net/etherbus.hh
@@ -52,19 +52,7 @@ class EtherBus : public EtherObject
bool loopback;
protected:
- class DoneEvent : public Event
- {
- protected:
- EtherBus *bus;
-
- public:
- DoneEvent(EtherBus *b) : bus(b) {}
- virtual void process() { bus->txDone(); }
- virtual const char *description() const
- { return "ethernet bus completion"; }
- };
-
- DoneEvent event;
+ EventFunctionWrapper event;
EthPacketPtr packet;
EtherInt *sender;
EtherDump *dump;
diff --git a/src/dev/net/ethertap.cc b/src/dev/net/ethertap.cc
index 0c027b621..59314e540 100644
--- a/src/dev/net/ethertap.cc
+++ b/src/dev/net/ethertap.cc
@@ -84,7 +84,8 @@ class TapEvent : public PollEvent
EtherTapBase::EtherTapBase(const Params *p)
: EtherObject(p), buflen(p->bufsz), dump(p->dump), event(NULL),
- interface(NULL), txEvent(this)
+ interface(NULL),
+ txEvent([this]{ retransmit(); }, "EtherTapBase retransmit")
{
buffer = new uint8_t[buflen];
interface = new EtherTapInt(name() + ".interface", this);
diff --git a/src/dev/net/ethertap.hh b/src/dev/net/ethertap.hh
index 96cc4710c..9b4e175e1 100644
--- a/src/dev/net/ethertap.hh
+++ b/src/dev/net/ethertap.hh
@@ -109,21 +109,7 @@ class EtherTapBase : public EtherObject
protected:
std::queue<EthPacketPtr> packetBuffer;
void retransmit();
-
- class TxEvent : public Event
- {
- protected:
- EtherTapBase *tap;
-
- public:
- TxEvent(EtherTapBase *_tap) : tap(_tap) {}
- void process() { tap->retransmit(); }
- virtual const char *description() const
- { return "EtherTapBase retransmit"; }
- };
-
- friend class TxEvent;
- TxEvent txEvent;
+ EventFunctionWrapper txEvent;
};
class EtherTapInt : public EtherInt