+ { if ((uintptr_t) gSystem & kWaitMask) waitForSystemMapper(); }
+
+ static IOMapper * copyMapperForDevice(IOService * device);
+ static IOMapper * copyMapperForDeviceWithIndex(IOService * device, unsigned int index);
+
+ // { subclasses
+
+ virtual uint64_t getPageSize(void) const = 0;
+
+ virtual IOReturn iovmMapMemory(IOMemoryDescriptor * memory,
+ uint64_t descriptorOffset,
+ uint64_t length,
+ uint32_t mapOptions,
+ const IODMAMapSpecification * mapSpecification,
+ IODMACommand * dmaCommand,
+ const IODMAMapPageList * pageList,
+ uint64_t * mapAddress,
+ uint64_t * mapLength) = 0;
+
+ virtual IOReturn iovmUnmapMemory(IOMemoryDescriptor * memory,
+ IODMACommand * dmaCommand,
+ uint64_t mapAddress,
+ uint64_t mapLength) = 0;
+
+ virtual IOReturn iovmInsert(uint32_t options,
+ uint64_t mapAddress,
+ uint64_t offset,
+ uint64_t physicalAddress,
+ uint64_t length) = 0;
+
+ virtual uint64_t mapToPhysicalAddress(uint64_t mappedAddress) = 0;