void IOLibInit(void);
kern_return_t IOIteratePageableMaps(vm_size_t size,
IOIteratePageableMapsCallback callback, void * ref);
-vm_map_t IOPageableMapForAddress(vm_address_t address);
+vm_map_t IOPageableMapForAddress(uintptr_t address);
kern_return_t
IOMemoryDescriptorMapMemEntry(vm_map_t map, ipc_port_t entry, IOOptionBits options, bool pageable,
mach_vm_size_t offset, mach_vm_address_t * address, mach_vm_size_t length);
-
-SInt32 OSKernelStackRemaining( void );
+kern_return_t
+IOMemoryDescriptorMapCopy(vm_map_t map,
+ vm_map_t src_map,
+ mach_vm_offset_t src_address,
+ IOOptionBits options,
+ mach_vm_size_t offset,
+ mach_vm_address_t * address, mach_vm_size_t length);
mach_vm_address_t
-IOKernelAllocateContiguous(mach_vm_size_t size, mach_vm_size_t alignment);
+IOKernelAllocateContiguous(mach_vm_size_t size,
+ mach_vm_address_t maxPhys, mach_vm_size_t alignment);
void
IOKernelFreeContiguous(mach_vm_address_t address, mach_vm_size_t size);
kIOMDWalkSegments = 0x00000001,
kIOMDFirstSegment = 0x00000002 | kIOMDWalkSegments,
kIOMDGetCharacteristics = 0x00000004,
+ kIOMDSetDMAActive = 0x00000005,
+ kIOMDSetDMAInactive = 0x00000006,
kIOMDLastDMACommandOperation
};
struct IOMDDMACharacteristics {
UInt64 fPreparedOffset;
UInt64 fPreparedLength;
+ UInt32 fSourceAlignMask;
+
UInt8 fCursor;
UInt8 fCheckAddressing;
UInt8 fIterateOnly;
UInt8 fMisaligned;
- UInt8 fCopyContig;
+ UInt8 fMapContig;
UInt8 fPrepared;
UInt8 fDoubleBuffer;
- UInt8 __pad[1];
-
- ppnum_t fCopyPageAlloc;
+ UInt8 fNewMD;
+ UInt8 fLocalMapper;
+
+ ppnum_t fCopyMapperPageAlloc;
ppnum_t fCopyPageCount;
ppnum_t fNextRemapIndex;
addr64_t fCopyNext;
+ ppnum_t fLocalMapperPageAlloc;
+ ppnum_t fLocalMapperPageCount;
+
class IOBufferMemoryDescriptor * fCopyMD;
// IODMAEventSource use