IOKitKernelInternal.h [plain text]
#ifndef _IOKIT_KERNELINTERNAL_H
#define _IOKIT_KERNELINTERNAL_H
#include <sys/cdefs.h>
__BEGIN_DECLS
#include <vm/pmap.h>
#include <mach/memory_object_types.h>
#include <device/device_port.h>
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);
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 );
mach_vm_address_t
IOKernelAllocateContiguous(mach_vm_size_t size, mach_vm_size_t alignment);
void
IOKernelFreeContiguous(mach_vm_address_t address, mach_vm_size_t size);
extern vm_size_t debug_iomallocpageable_size;
extern kern_return_t IOMapPages(vm_map_t map, mach_vm_address_t va, mach_vm_address_t pa,
mach_vm_size_t length, unsigned int mapFlags);
extern kern_return_t IOUnmapPages(vm_map_t map, mach_vm_address_t va, mach_vm_size_t length);
extern kern_return_t IOProtectCacheMode(vm_map_t map, mach_vm_address_t va,
mach_vm_size_t length, unsigned int mapFlags);
extern ppnum_t IOGetLastPageNumber(void);
extern ppnum_t gIOLastPage;
extern void bcopy_phys(addr64_t from, addr64_t to, int size);
__END_DECLS
enum {
kIOMDWalkSegments = 0x00000001,
kIOMDFirstSegment = 0x00000002 | kIOMDWalkSegments,
kIOMDGetCharacteristics = 0x00000004,
kIOMDLastDMACommandOperation
};
struct IOMDDMACharacteristics {
UInt64 fLength;
UInt32 fSGCount;
UInt32 fPages;
UInt32 fPageAlign;
ppnum_t fHighestPage;
IODirection fDirection;
UInt8 fIsMapped, fIsPrepared;
};
struct IOMDDMAWalkSegmentArgs {
UInt64 fOffset; UInt64 fIOVMAddr, fLength; UInt8 fMapped; };
typedef UInt8 IOMDDMAWalkSegmentState[128];
struct IODMACommandInternal
{
IOMDDMAWalkSegmentState fState;
IOMDDMACharacteristics fMDSummary;
UInt64 fPreparedOffset;
UInt64 fPreparedLength;
UInt8 fCursor;
UInt8 fCheckAddressing;
UInt8 fIterateOnly;
UInt8 fMisaligned;
UInt8 fCopyContig;
UInt8 fPrepared;
UInt8 fDoubleBuffer;
UInt8 fNewMD;
ppnum_t fCopyPageAlloc;
ppnum_t fCopyPageCount;
ppnum_t fNextRemapIndex;
addr64_t fCopyNext;
class IOBufferMemoryDescriptor * fCopyMD;
IOReturn fStatus;
UInt64 fActualByteCount;
};
extern "C" struct timeval gIOLastSleepTime;
extern "C" struct timeval gIOLastWakeTime;
extern "C" void IOKitResetTime( void );
extern "C" void IOKitInitializeTime( void );
extern "C" OSString * IOCopyLogNameForPID(int pid);
#endif