From af6b51925cb5032dd2c670bd2c21912b732c6fc1 Mon Sep 17 00:00:00 2001 From: Andreas Sandberg Date: Fri, 7 Aug 2015 09:59:14 +0100 Subject: [PATCH] dev: Make serialization in Sinic constant This changeset transitions the Sinic device to the new serialization framework that requires the serialization method to be constant. --- src/dev/pktfifo.hh | 14 +++++++++----- src/dev/sinic.cc | 6 +++--- src/dev/sinic.hh | 2 +- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/dev/pktfifo.hh b/src/dev/pktfifo.hh index 95d46fc76..ea5803026 100644 --- a/src/dev/pktfifo.hh +++ b/src/dev/pktfifo.hh @@ -80,6 +80,7 @@ class PacketFifo typedef std::list fifo_list; typedef fifo_list::iterator iterator; + typedef fifo_list::const_iterator const_iterator; protected: std::list 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) diff --git a/src/dev/sinic.cc b/src/dev/sinic.cc index a17f50864..e2b9e28fb 100644 --- a/src/dev/sinic.cc +++ b/src/dev/sinic.cc @@ -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; diff --git a/src/dev/sinic.hh b/src/dev/sinic.hh index f0645a807..41a629af1 100644 --- a/src/dev/sinic.hh +++ b/src/dev/sinic.hh @@ -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: -- 2.30.2