Framework

Kernel

Develop kernel-resident device drivers and kernel extensions.

Overview

The Kernel Framework provides the APIs and support for kernel-resident device drivers and other kernel extensions. It defines the base class for I/O Kit device drivers (IOService), several helper classes, and the families supporting many types of devices.

Topics

Classes

ATADeviceNub

ATADeviceNub is a concrete implementation of IOATADevice.

ATATimerEventSource

Extend the timer event source to allow checking for timer expiration from behind the workloop.

IOAGPDevice

An IOService class representing an AGP master device.

IOATABusInfo

used to indicate the capabilities of the bus the device is connected to, PIO and DMA modes supported, etc.

IOATAController

The base class for ata controller family. Provides the interface common to all ata bus controllers.

IOATADevConfig

used for configuring and communicating the desired transfer modes of a device. A disk driver would typically use this object in conjunction with the 512-bytes of identification data from the drive and the IOATABusInfo object for the bus it is connected to. This object will determine the best matching transfer speeds available. the device driver will then send a series of Set Features commands to configure the drive and this object to the bus through the IOATADevice nub in order to configure the optimum transfer mode. The driver for the disk drive may choose to populate this object with whatever transfer mode desired, in the event that a different mode is required.

IOATADevice

This object implements a relay to an ATA Bus where a drive is attached.

IOATAPIProtocolTransport

SCSI Protocol Driver Family for ATAPI Devices.

IOAudioControl

Represents any controllable attribute of an IOAudioDevice.

IOAudioDevice

Abstract base class for a single piece of audio hardware. The IOAudioDevice provides the central coordination point for an audio driver.

IOAudioEngine

Abstract base class for a single audio audio / I/O engine.

IOAudioPort

Represents a logical or physical port or functional unit in an audio device.

IOAudioStream

This class wraps a single sample buffer in an audio driver.

IOBDBlockStorageDevice

The IOBDBlockStorageDevice class is a generic BD block storage device abstraction.

IOBDMedia

The IOBDMedia class is a random-access disk device abstraction for BDs.

IOBasicOutputQueue

A concrete implementation of an IOOutputQueue.

IOBigMemoryCursor

An IOMemoryCursor subclass that outputs a vector of PhysicalSegments in the big endian byte order.

IOBlockStorageDevice

A generic block storage device abstraction.

IOBlockStorageDriver

The common base class for generic block storage drivers.

IOBufferMemoryDescriptor

Provides a simple memory descriptor that allocates its own buffer memory.

IOCDBlockStorageDevice

The IOCDBlockStorageDevice class is a generic CD block storage device abstraction.

IOCDMedia

The IOCDMedia class is a random-access disk device abstraction for CDs.

IOCommand

This class is an abstract class which represents an I/O command.

IOCommandGate

Single-threaded work-loop client request mechanism.

IOCommandPool

Manipulates a pool of commands which inherit from IOCommand.

IODMACommand

A mechanism to convert memory references to I/O bus addresses.

IODVDBlockStorageDevice

The IODVDBlockStorageDevice class is a generic DVD block storage device abstraction.

IODVDMedia

The IODVDMedia class is a random-access disk device abstraction for DVDs.

IODataQueue

A generic queue designed to pass data from the kernel to a user process.

IODeviceMemory

An IOMemoryDescriptor used for device physical memory ranges.

IOEthernetController

Abstract superclass for Ethernet controllers.

Deprecated
IOEthernetInterface

The Ethernet interface object.

Deprecated
IOEventSource

Abstract class for all work-loop event sources.

IOExtendedLBA

If 48-bit LBAs are supported, IOExtendedLBA is used to represent a 48-bit LBA. The driver examines the ATA identify data to determine if 48-bit addressing is supported.

IOFWAsyncCommand

Send an async request to a device

IOFWAsyncPHYCommand

Send an async PHY packet

IOFWAsyncStreamCommand

Send an async stream packet

IOFWBusCommand

Bus control commands

IOFWCommand

Base class for FireWire commands

IOFWDelayCommand

Command to execute some code after a specified delay (in microseconds) All it does is timeout after the specified delay, hence calling the completion callback.

IOFWReadQuadCommand

An easier to use version of IOFWReadCommand for use when the data to be transferred is an integer number of quads. Note that block read requests will be used for transfers greater than one quad unless setMaxPacket(4) is called.

IOFWWriteQuadCommand

An easier to use version of IOFWWriteCommand for use when the data to be transferred is small and an integer number of quads. Note that block read requests will be used for transfers greater than one quad unless setMaxPacket(4) is called. kMaxWriteQuads is the largest legal number of quads that this object can be asked to transfer (the data is copied into an internal buffer in init() and reinit()).

IOFilterInterruptEventSource

Filtering varient of the $link IOInterruptEventSource.

IOFilterScheme

The common base class for all filter scheme objects.

IOFireWireAVCNub

nub for AVC devices

IOFireWireAVCSubUnit

nub for sub unit of AVC devices. Just for matching, calls the AVC unit for all functions.

IOFireWireAVCTargetSpace

object to centralize the AVC Target mode support

IOFireWireAVCUnit

nub for AVC devices

IOFireWireBus

IOFireWireBus is a public class the provides access to general FireWire functionality...

IOFireWireDevice

Represents a FireWire device.

IOFireWirePCRSpace

object to multiplex users of the PCR plug registers

IOFireWireSBP2LUN

Provider for most drivers.

IOFireWireSBP2Login

Supplies the login maintenance and Normal Command ORB execution portions of the API.

IOFireWireSBP2ManagementORB

Supplies non login related management ORBs. Management ORBs can be executed independent of a login, if necessary. Management ORBs are created using the IOFireWireSBP2LUN interface.

IOFireWireSBP2ORB

Represents an SBP2 normal command ORB. Supplies the APIs for configuring normal command ORBs. This includes setting the command block and writing the page tables for I/O. The ORBs are executed using the submitORB method in IOFireWireSBP2Login.

IOFireWireSBP2Target

Serves as bridge between IOFireWireUnit and IOFireWireLUN.

IOFireWireSerialBusProtocolTransport

SCSI Protocol Driver Family for FireWire SBP2 Devices.

IOFramebuffer

The base class for graphics devices to be made available as part of the desktop.

IOGatedOutputQueue

An extension of an IOBasicOutputQueue.

IOHIDElementDeprecated
IOHIDEventService

IOService represents an device or OS service in IOKit and DriverKit.

Deprecated
IOHIDInterface

IOService represents an device or OS service in IOKit and DriverKit.

Deprecated
IOHIDSystemDeprecated
IOHIDWorkLoopDeprecated
IOHIDeviceDeprecated
IOHIKeyboardDeprecated
IOHIPointingDeprecated
IOInterleavedMemoryDescriptor

The IOInterleavedMemoryDescriptor object describes a memory area made up of portions of several other IOMemoryDescriptors.

IOInterruptEventSource

Event source for interrupt delivery to work-loop based drivers.

IOKernelDebugger

Kernel debugger nub.

IOLittleMemoryCursor

An IOMemoryCursor subclass that outputs a vector of PhysicalSegments in the little endian byte order.

IOMedia

A random-access disk device abstraction.

IOMemoryCursor

A mechanism to convert memory references to physical addresses.

IOMemoryDescriptor

An abstract base class defining common methods for describing physical or virtual memory.

IOMemoryMap

A class defining common methods for describing a memory mapping.

IOMultiMemoryDescriptor

The IOMultiMemoryDescriptor object describes a memory area made up of several other IOMemoryDescriptors.

IONaturalMemoryCursor

An IOMemoryCursor subclass that outputs a vector of PhysicalSegments in the natural byte orientation for the CPU.

IONetworkController

Implements the framework for a generic network controller.

IONetworkData

An object that manages a fixed-size named buffer.

IONetworkInterface

Abstract class that manages the connection between an IONetworkController and the data link interface layer.

IONetworkMedium

An object that encapsulates information about a network medium (i.e. 10Base-T, or 100Base-T Full Duplex).

IONotifier

An abstract base class defining common methods for controlling a notification request.

IOOutputQueue

A packet queue that supports multiple producers and a single consumer.

IOPCIDevice

An IOService class representing a PCI device.

IOPacketQueue

Implements a bounded FIFO queue of mbuf packets.

IOPartitionScheme

The common base class for all partition scheme objects.

IORangeAllocator

A utility class to manage allocations from a range.

IORegistryEntry

The base class for all objects in the registry.

IORegistryIterator

An iterator over the registry.

IOSCSIParallelInterfaceController

Class that represents a SCSI Host Bus Adapter.

IOSCSIProtocolInterface

This class defines the public SCSI Protocol Layer API for any class that provides Protocol services or needs to provide the Protocol Service API for passing service requests to a Protocol Service driver.

IOSCSIProtocolServices

This class defines the public SCSI Protocol Services Layer API for any class that implements SCSI protocol services. A protocol services layer driver is responsible for taking incoming SCSITaskIdentifier objects and translating them to the native command type for the native protocol interface (e.g. SBP-2 ORB on FireWire).

IOService

The base class for most I/O Kit families, devices, and drivers.

IOSharedDataQueue

A generic queue designed to pass data both from the kernel to a user process and from a user process to the kernel.

IOStorage

The common base class for mass storage objects.

IOStream

A class representing a stream of data buffers passed from kernel to user space and back again.

IOStreamBuffer

A class representing a data buffer that is part of an IOStream.

IOSubMemoryDescriptor

The IOSubMemoryDescriptor object describes a memory area made up of a portion of another IOMemoryDescriptor.

IOTimerEventSource

Time based event source mechanism.

IOUSBHostDeviceDeprecated
IOUSBHostPipeDeprecated
IOUSBHostStreamDeprecated
IOUserClient

Provides a basis for communication between client applications and I/O Kit objects.

IOVideoDevice

A class that represents a video device.

IOVideoStream

A class representing a stream of video data buffers passed from kernel to user space and back again.

OSArray

OSArray provides an indexed store of objects.

OSBoolean

OSBoolean wraps a boolean value in a C++ object for use in Libkern collections.

OSCollection

The abstract superclass for Libkern collections.

OSData

OSData wraps an array of bytes in a C++ object for use in Libkern collections.

OSDictionary

OSDictionary provides an associative store using strings for keys.

OSIterator

The abstract superclass for Libkern iterators.

OSMetaClassBase

OSMetaClassBase is the abstract bootstrap class for the Libkern and I/O Kit run-time type information system.

OSNumber

OSNumber wraps an integer value in a C++ object for use in Libkern collections.

OSObject

OSObject is the concrete root class of the Libkern and I/O Kit C++ class hierarchy.

OSOrderedSet

OSOrderedSet provides an ordered set store of objects.

OSSerialize

OSSerialize coordinates serialization of Libkern C++ objects into an XML stream.

OSSet

OSSet provides an unordered set store of objects.

OSString

OSString wraps a C string in a C++ object for use in Libkern collections.

OSSymbol

OSSymbol wraps a C string in a unique C++ object for use as keys in Libkern collections.

Protocols

See Also

Beta Software

This documentation contains preliminary information about an API or technology in development. This information is subject to change, and software implemented according to this documentation should be tested with final operating system software.

Learn more about using Apple's beta software