write_queue_entry.cc (12727:56c23b54bcb1) write_queue_entry.cc (12823:ba630bc7a36d)
1/*
2 * Copyright (c) 2012-2013, 2015-2017 ARM Limited
3 * All rights reserved.
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

--- 52 unchanged lines hidden (view full) ---

61inline void
62WriteQueueEntry::TargetList::add(PacketPtr pkt, Tick readyTime,
63 Counter order)
64{
65 emplace_back(pkt, readyTime, order);
66}
67
68bool
1/*
2 * Copyright (c) 2012-2013, 2015-2017 ARM Limited
3 * All rights reserved.
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

--- 52 unchanged lines hidden (view full) ---

61inline void
62WriteQueueEntry::TargetList::add(PacketPtr pkt, Tick readyTime,
63 Counter order)
64{
65 emplace_back(pkt, readyTime, order);
66}
67
68bool
69WriteQueueEntry::TargetList::checkFunctional(PacketPtr pkt)
69WriteQueueEntry::TargetList::trySatisfyFunctional(PacketPtr pkt)
70{
71 for (auto& t : *this) {
70{
71 for (auto& t : *this) {
72 if (pkt->checkFunctional(t.pkt)) {
72 if (pkt->trySatisfyFunctional(t.pkt)) {
73 return true;
74 }
75 }
76
77 return false;
78}
79
80void

--- 36 unchanged lines hidden (view full) ---

117void
118WriteQueueEntry::deallocate()
119{
120 assert(targets.empty());
121 inService = false;
122}
123
124bool
73 return true;
74 }
75 }
76
77 return false;
78}
79
80void

--- 36 unchanged lines hidden (view full) ---

117void
118WriteQueueEntry::deallocate()
119{
120 assert(targets.empty());
121 inService = false;
122}
123
124bool
125WriteQueueEntry::checkFunctional(PacketPtr pkt)
125WriteQueueEntry::trySatisfyFunctional(PacketPtr pkt)
126{
127 // For printing, we treat the WriteQueueEntry as a whole as single
128 // entity. For other requests, we iterate over the individual
129 // targets since that's where the actual data lies.
130 if (pkt->isPrint()) {
126{
127 // For printing, we treat the WriteQueueEntry as a whole as single
128 // entity. For other requests, we iterate over the individual
129 // targets since that's where the actual data lies.
130 if (pkt->isPrint()) {
131 pkt->checkFunctional(this, blkAddr, isSecure, blkSize, nullptr);
131 pkt->trySatisfyFunctional(this, blkAddr, isSecure, blkSize, nullptr);
132 return false;
133 } else {
132 return false;
133 } else {
134 return targets.checkFunctional(pkt);
134 return targets.trySatisfyFunctional(pkt);
135 }
136}
137
138bool
139WriteQueueEntry::sendPacket(BaseCache &cache)
140{
141 return cache.sendWriteQueuePacket(this);
142}

--- 22 unchanged lines hidden ---
135 }
136}
137
138bool
139WriteQueueEntry::sendPacket(BaseCache &cache)
140{
141 return cache.sendWriteQueuePacket(this);
142}

--- 22 unchanged lines hidden ---