39,40c39
< : Port(dev->name() + pname), device(dev), sys(s),
< outTiming(0), drainEvent(NULL)
---
> : SimpleTimingPort(dev->name() + pname), device(dev), sys(s)
64,105d62
< void
< PioPort::recvRetry()
< {
< bool result = true;
< while (result && transmitList.size()) {
< result = Port::sendTiming(transmitList.front());
< if (result)
< transmitList.pop_front();
< }
< if (transmitList.size() == 0 && drainEvent) {
< drainEvent->process();
< drainEvent = NULL;
< }
< }
<
< void
< PioPort::SendEvent::process()
< {
< port->outTiming--;
< assert(port->outTiming >= 0);
< if (port->Port::sendTiming(packet))
< if (port->transmitList.size() == 0 && port->drainEvent) {
< port->drainEvent->process();
< port->drainEvent = NULL;
< }
< return;
<
< port->transmitList.push_back(packet);
< }
<
< void
< PioPort::resendNacked(Packet *pkt) {
< pkt->reinitNacked();
< if (transmitList.size()) {
< transmitList.push_front(pkt);
< } else {
< if (!Port::sendTiming(pkt))
< transmitList.push_front(pkt);
< }
< };
<
<
120,128d76
< unsigned int
< PioPort::drain(Event *de)
< {
< if (outTiming == 0 && transmitList.size() == 0)
< return 0;
< drainEvent = de;
< return 1;
< }
<