__BEGIN_DECLS
-#include <vm/pmap.h>
+#include <vm/vm_pageout.h>
#include <mach/memory_object_types.h>
#include <device/device_port.h>
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+#if !defined(NO_KDEBUG)
+
+#define IOServiceTrace(csc, a, b, c, d) do { \
+ if(kIOTraceIOService & gIOKitDebug) { \
+ KERNEL_DEBUG_CONSTANT(IODBG_IOSERVICE(csc), a, b, c, d, 0); \
+ } \
+} while(0)
+
+#else /* NO_KDEBUG */
+
+#define IOServiceTrace(csc, a, b, c, d) do { \
+ (void)a; \
+ (void)b; \
+ (void)c; \
+ (void)d; \
+} while (0)
+
+#endif /* NO_KDEBUG */
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
typedef kern_return_t (*IOIteratePageableMapsCallback)(vm_map_t map, void * ref);
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,
+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,
+ 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);
+IOKernelAllocateWithPhysicalRestrict(mach_vm_size_t size, mach_vm_address_t maxPhys,
+ mach_vm_size_t alignment, bool contiguous);
void
-IOKernelFreeContiguous(mach_vm_address_t address, mach_vm_size_t size);
+IOKernelFreePhysical(mach_vm_address_t address, mach_vm_size_t size);
+
extern vm_size_t debug_iomallocpageable_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];
+ UInt8 fNewMD;
+ UInt8 fLocalMapper;
+
+ vm_page_t fCopyPageAlloc;
+ vm_page_t fCopyNext;
+ vm_page_t fNextRemapPage;
- ppnum_t fCopyPageAlloc;
ppnum_t fCopyPageCount;
- ppnum_t fNextRemapIndex;
- addr64_t fCopyNext;
+
+ ppnum_t fLocalMapperPageAlloc;
+ ppnum_t fLocalMapperPageCount;
class IOBufferMemoryDescriptor * fCopyMD;
extern "C" OSString * IOCopyLogNameForPID(int pid);
+#if defined(__i386__) || defined(__x86_64__)
+extern "C" void IOSetKeyStoreData(IOMemoryDescriptor * data);
+#endif
+
#endif /* ! _IOKIT_KERNELINTERNAL_H */