add the ability to insert into the middle of the timing port send list
--HG-- extra : convert_revision : 5422025f74ba7013f98d1d1dcbd1070f580aae61
This commit is contained in:
parent
697b432ba8
commit
c68f7feaa8
1 changed files with 20 additions and 1 deletions
|
@ -44,6 +44,7 @@ SimpleTimingPort::recvFunctional(PacketPtr pkt)
|
||||||
if (target->intersect(pkt))
|
if (target->intersect(pkt))
|
||||||
done = fixPacket(pkt, target);
|
done = fixPacket(pkt, target);
|
||||||
|
|
||||||
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Then just do an atomic access and throw away the returned latency
|
//Then just do an atomic access and throw away the returned latency
|
||||||
|
@ -98,11 +99,29 @@ SimpleTimingPort::recvRetry()
|
||||||
void
|
void
|
||||||
SimpleTimingPort::sendTiming(PacketPtr pkt, Tick time)
|
SimpleTimingPort::sendTiming(PacketPtr pkt, Tick time)
|
||||||
{
|
{
|
||||||
|
// Nothing is on the list: add it and schedule an event
|
||||||
if (transmitList.empty()) {
|
if (transmitList.empty()) {
|
||||||
assert(!sendEvent.scheduled());
|
assert(!sendEvent.scheduled());
|
||||||
sendEvent.schedule(curTick+time);
|
sendEvent.schedule(curTick+time);
|
||||||
}
|
|
||||||
transmitList.push_back(std::pair<Tick,PacketPtr>(time+curTick,pkt));
|
transmitList.push_back(std::pair<Tick,PacketPtr>(time+curTick,pkt));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// something is on the list and this belongs at the end
|
||||||
|
if (time+curTick >= transmitList.back().first) {
|
||||||
|
transmitList.push_back(std::pair<Tick,PacketPtr>(time+curTick,pkt));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Something is on the list and this belongs somewhere else
|
||||||
|
std::list<std::pair<Tick,PacketPtr> >::iterator i = transmitList.begin();
|
||||||
|
std::list<std::pair<Tick,PacketPtr> >::iterator end = transmitList.end();
|
||||||
|
bool done = false;
|
||||||
|
|
||||||
|
while (i != end && !done) {
|
||||||
|
if (time+curTick < i->first)
|
||||||
|
transmitList.insert(i,std::pair<Tick,PacketPtr>(time+curTick,pkt));
|
||||||
|
i++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
Loading…
Reference in a new issue