diff options
author | Andreas Sandberg <andreas.sandberg@arm.com> | 2015-08-07 09:59:14 +0100 |
---|---|---|
committer | Andreas Sandberg <andreas.sandberg@arm.com> | 2015-08-07 09:59:14 +0100 |
commit | af6b51925cb5032dd2c670bd2c21912b732c6fc1 (patch) | |
tree | 9cdd524ee3c00895847153a099087c1ec02ab098 | |
parent | 53e777d6838ac3ca80e6557626f9e99fd93dd0f7 (diff) | |
download | gem5-af6b51925cb5032dd2c670bd2c21912b732c6fc1.tar.xz |
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.
-rw-r--r-- | src/dev/pktfifo.hh | 14 | ||||
-rw-r--r-- | src/dev/sinic.cc | 6 | ||||
-rw-r--r-- | 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<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) 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: |