summaryrefslogtreecommitdiff
path: root/src/dev/io_device.hh
diff options
context:
space:
mode:
authorAli Saidi <saidi@eecs.umich.edu>2006-06-08 19:43:50 -0400
committerAli Saidi <saidi@eecs.umich.edu>2006-06-08 19:43:50 -0400
commit6875e8d8391035edf8fc4a8fdb29f614a527b0bc (patch)
tree3b534726b982b2055d0fb53ca2958ffbc080b98d /src/dev/io_device.hh
parent8ee856f1d53f9b181a06183c8c86855898b82ba7 (diff)
downloadgem5-6875e8d8391035edf8fc4a8fdb29f614a527b0bc.tar.xz
add nacked result and a function to swizzle nacked packet into something that can be sent out again
implement ability for i/o devices to handle src/dev/io_device.cc: src/dev/io_device.hh: implement ability for i/o devices to handle src/mem/packet.hh: add nacked result and a function to swizzle nacked packet into something that can be sent out again --HG-- extra : convert_revision : fa42b01f4ab21562d37bd6bf6f4d7f69a94f0e86
Diffstat (limited to 'src/dev/io_device.hh')
-rw-r--r--src/dev/io_device.hh18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/dev/io_device.hh b/src/dev/io_device.hh
index 3cb18c9fa..195ca0fb7 100644
--- a/src/dev/io_device.hh
+++ b/src/dev/io_device.hh
@@ -121,10 +121,22 @@ class PioPort : public Port
struct DmaReqState : public Packet::SenderState
{
+ /** Event to call on the device when this transaction (all packets)
+ * complete. */
Event *completionEvent;
+
+ /** Where we came from for some sanity checking. */
+ Port *outPort;
+
+ /** Total number of bytes that this transaction involves. */
+ Addr totBytes;
+
+ /** Number of bytes that have been acked for this transaction. */
+ Addr numBytes;
+
bool final;
- DmaReqState(Event *ce, bool f)
- : completionEvent(ce), final(f)
+ DmaReqState(Event *ce, Port *p, Addr tb)
+ : completionEvent(ce), outPort(p), totBytes(tb), numBytes(0)
{}
};
@@ -155,7 +167,7 @@ class DmaPort : public Port
virtual void getDeviceAddressRanges(AddrRangeList &resp, AddrRangeList &snoop)
{ resp.clear(); snoop.clear(); }
- void sendDma(Packet *pkt);
+ void sendDma(Packet *pkt, bool front = false);
public:
DmaPort(DmaDevice *dev, Platform *p);