net: Refactor some Event subclasses to lambdas
authorSean Wilson <spwilson2@wisc.edu>
Wed, 28 Jun 2017 16:18:55 +0000 (11:18 -0500)
committerSean Wilson <spwilson2@wisc.edu>
Wed, 12 Jul 2017 20:07:05 +0000 (20:07 +0000)
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>
src/dev/net/etherbus.cc
src/dev/net/etherbus.hh
src/dev/net/ethertap.cc
src/dev/net/ethertap.hh

index 7ccb8a4ac41d0eba0a152dc6f8c9eb944c8486a7..243e27b18267fadf98fad24b0e4e299c6e4c0ed2 100644 (file)
@@ -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)
 {
 }
 
index 7395c28d8730a2af85eaa9825fc73b01820e2930..1b264533c87cad6e16e6fcc93a9c5ae8b237cbd5 100644 (file)
@@ -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;
index 0c027b621f72ef11e8c47f3a613e797e04dfd8a8..59314e540b0b84025713c087c6368270c6c62f0a 100644 (file)
@@ -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);
index 96cc4710cc95482b1b71cdfb077678e621510b11..9b4e175e1105aae7c659cd332d4bb94269b3ae49 100644 (file)
@@ -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