-struct IOMDDMACharacteristics {
- UInt64 fLength;
- UInt32 fSGCount;
- UInt32 fPages;
- UInt32 fPageAlign;
- ppnum_t fHighestPage;
- IODirection fDirection;
- UInt8 fIsMapped, fIsPrepared;
+
+struct IODMACommandInternal {
+ IOMDDMAWalkSegmentState fState;
+ IOMDDMACharacteristics fMDSummary;
+
+ UInt64 fPreparedOffset;
+ UInt64 fPreparedLength;
+
+ UInt32 fSourceAlignMask;
+
+ UInt8 fCursor;
+ UInt8 fCheckAddressing;
+ UInt8 fIterateOnly;
+ UInt8 fMisaligned;
+ UInt8 fPrepared;
+ UInt8 fDoubleBuffer;
+ UInt8 fNewMD;
+ UInt8 fLocalMapperAllocValid;
+ UInt8 fIOVMAddrValid;
+ UInt8 fForceDoubleBuffer;
+ UInt8 fSetActiveNoMapper;
+
+ vm_page_t fCopyPageAlloc;
+ vm_page_t fCopyNext;
+ vm_page_t fNextRemapPage;
+
+ ppnum_t fCopyPageCount;
+
+ uint64_t fLocalMapperAlloc;
+ uint64_t fLocalMapperAllocLength;
+
+ OSPtr<IOBufferMemoryDescriptor> fCopyMD;
+
+ IOService * fDevice;
+
+ // IODMAEventSource use
+ IOReturn fStatus;
+ UInt64 fActualByteCount;
+ AbsoluteTime fTimeStamp;
+
+ // Multisegment vars
+ IODMACommandMapSegment * fMapSegments;
+ uint32_t fMapSegmentsCount;
+ uint64_t fLocalMapperAllocBase;
+ uint64_t fOffset2Index;
+ uint64_t fNextOffset;
+ uint64_t fIndex;