33a34
> #include <unordered_map>
35a37
> #include "mem/ruby/common/Address.hh"
41a44,46
> DMARequest(uint64_t start_paddr, int len, bool write, int bytes_completed,
> int bytes_issued, uint8_t *data, PacketPtr pkt);
>
60,61c65,66
< bool busy() { return m_is_busy;}
< int outstandingCount() const override { return (m_is_busy ? 1 : 0); }
---
> bool busy() { return m_outstanding_count > 0; }
> int outstandingCount() const override { return m_outstanding_count; }
66,67c71,72
< void dataCallback(const DataBlock & dblk);
< void ackCallback();
---
> void dataCallback(const DataBlock &dblk, const Addr &addr);
> void ackCallback(const Addr &addr);
72c77
< void issueNext();
---
> void issueNext(const Addr &addr);
74d78
< bool m_is_busy;
76c80,85
< DMARequest active_request;
---
>
> typedef std::unordered_map<Addr, DMARequest> RequestTable;
> RequestTable m_RequestTable;
>
> int m_outstanding_count;
> int m_max_outstanding_requests;