dev: Make serialization in Sinic constant
authorAndreas Sandberg <andreas.sandberg@arm.com>
Fri, 7 Aug 2015 08:59:14 +0000 (09:59 +0100)
committerAndreas Sandberg <andreas.sandberg@arm.com>
Fri, 7 Aug 2015 08:59:14 +0000 (09:59 +0100)
This changeset transitions the Sinic device to the new serialization
framework that requires the serialization method to be constant.

src/dev/pktfifo.hh
src/dev/sinic.cc
src/dev/sinic.hh

index 95d46fc76c60969dfd2ed4c4fd115e5cd4c4bdec..ea5803026e8afbdeecca80b4588490cd3a6f934b 100644 (file)
@@ -80,6 +80,7 @@ class PacketFifo
 
     typedef std::list<PacketFifoEntry> fifo_list;
     typedef fifo_list::iterator iterator;
+    typedef fifo_list::const_iterator const_iterator;
 
   protected:
     std::list<PacketFifoEntry> fifo;
@@ -112,6 +113,9 @@ class PacketFifo
     iterator begin() { return fifo.begin(); }
     iterator end() { return fifo.end(); }
 
+    const_iterator begin() const { return fifo.begin(); }
+    const_iterator end() const { return fifo.end(); }
+
     EthPacketPtr front() { return fifo.begin()->packet; }
 
     bool push(EthPacketPtr ptr)
@@ -171,25 +175,25 @@ class PacketFifo
 
     bool copyout(void *dest, unsigned offset, unsigned len);
 
-    int countPacketsBefore(iterator i)
+    int countPacketsBefore(const_iterator i) const
     {
         if (i == fifo.end())
             return 0;
         return i->number - fifo.begin()->number;
     }
 
-    int countPacketsAfter(iterator i)
+    int countPacketsAfter(const_iterator i) const
     {
-        iterator end = fifo.end();
+        auto end = fifo.end();
         if (i == end)
             return 0;
         return (--end)->number - i->number;
     }
 
-    void check()
+    void check() const
     {
         unsigned total = 0;
-        for (iterator i = begin(); i != end(); ++i)
+        for (auto i = begin(); i != end(); ++i)
             total += i->packet->length + i->slack;
 
         if (total != _size)
index a17f50864a71aec004f4f8fd4621bb4d3c825a5e..e2b9e28fbc85423df5537f958b8dad99176d5d2c 100644 (file)
@@ -1303,7 +1303,7 @@ Base::unserialize(CheckpointIn &cp)
 }
 
 void
-Device::serializeOld(CheckpointOut &cp)
+Device::serialize(CheckpointOut &cp) const
 {
     int count;
 
@@ -1345,7 +1345,7 @@ Device::serializeOld(CheckpointOut &cp)
         paramOut(cp, reg + ".rxPacketExists", rxPacketExists);
         if (rxPacketExists) {
             int rxPacket = 0;
-            PacketFifo::iterator i = rxFifo.begin();
+            auto i = rxFifo.begin();
             while (i != vnic->rxIndex) {
                 assert(i != rxFifo.end());
                 ++i;
@@ -1369,7 +1369,7 @@ Device::serializeOld(CheckpointOut &cp)
     SERIALIZE_SCALAR(rxDirtyCount);
     SERIALIZE_SCALAR(rxMappedCount);
 
-    VirtualList::iterator i, end;
+    VirtualList::const_iterator i, end;
     for (count = 0, i = rxList.begin(), end = rxList.end(); i != end; ++i)
         paramOut(cp, csprintf("rxList%d", count++), *i);
     int rxListSize = count;
index f0645a807e5c92e6c2e487d02bd8aab803e58c67..41a629af18ebaf688a4abf13f5be81b58d814aff 100644 (file)
@@ -297,7 +297,7 @@ class Device : public Base
  * Serialization stuff
  */
   public:
-    void serializeOld(CheckpointOut &cp) M5_ATTR_OVERRIDE;
+    void serialize(CheckpointOut &cp) const M5_ATTR_OVERRIDE;
     void unserialize(CheckpointIn &cp) M5_ATTR_OVERRIDE;
 
   public: