- DmaReqState(Event *ce, Port *p, Addr tb)
- : completionEvent(ce), outPort(p), totBytes(tb), numBytes(0)
- {}
- };
-
- DmaDevice *device;
- std::list<Packet*> transmitList;
-
- /** The system that device/port are in. This is used to select which mode
- * we are currently operating in. */
- System *sys;
-
- /** Number of outstanding packets the dma port has. */
- int pendingCount;
-
- /** If a dmaAction is in progress. */
- int actionInProgress;
-
- /** If we need to drain, keep the drain event around until we're done
- * here.*/
- Event *drainEvent;
-
- virtual bool recvTiming(Packet *pkt);
- virtual Tick recvAtomic(Packet *pkt)
- { panic("dma port shouldn't be used for pio access."); }
- virtual void recvFunctional(Packet *pkt)
- { panic("dma port shouldn't be used for pio access."); }
-
- virtual void recvStatusChange(Status status)
- { ; }
-
- virtual void recvRetry() ;
-
- virtual void getDeviceAddressRanges(AddrRangeList &resp,
- AddrRangeList &snoop)
- { resp.clear(); snoop.clear(); }
-
- void sendDma(Packet *pkt, bool front = false);