Computer hardware, typically excluding the CPU and system memory, that can be controlled and can send or receive data. Examples of devices include monitors, drives, bus controllers, and keyboards.
- device file
A special file the I/O Kit creates in the
/devdirectory for each serial and storage device it discovers.
- device interface
A plug-in interface, provided by an I/O Kit family, that conforms to the CFPlugIn architecture. Code running on OS X can call the functions in a device interface to access the in-kernel object representing a device. A device interface transmits an application’s commands to the device object via a user client. See also user client.
- device matching
The I/O Kit process of searching the I/O Registry for objects representing one or more specific kinds of device.
A unit of software that manages a specific piece of hardware. A driver written with the I/O Kit is an object that implements the appropriate I/O Kit abstractions for controlling that hardware.
A driver can serve as a nub, but this is rare. See also nub.
- driver matching
The I/O Kit process of locating a suitable driver for a device.
- driver personality
A dictionary of key/value pairs that specify device property values, such as family type, vendor name, or product name. A driver is suitable for any device whose properties match one of the driver’s personalities.
A collection of software abstractions that are common to all devices of a particular category. Families provide functionality and services to drivers. The I/O Kit defines families for bus protocols (such as SCSI, USB, and FireWire), storage devices, human interface devices, and many others.
A type of bundle that packages a dynamic shared library with the resources the library requires, including header files and reference documentation.
- I/O Kit
An object-oriented framework for developing device drivers on OS X. The I/O Kit provides many features, from a set of object classes that model system software and streamline the task of writing device drivers, to a dynamic model for identifying, loading, and unloading drivers and other services in a running system.
- I/O Kit framework
The framework that includes
IOKitLib.hand makes the I/O Registry, user client plug-ins, and other I/O Kit services available to applications and other code. Stored on disk as
- I/O Registry
A dynamic database that describes a collection of ”live” objects, each of which represents an I/O Kit entity, such as a family, driver, or nub. As hardware is added to or removed from the system, the I/O Registry is modified to reflect the changes.
- kernel space
The protected memory partition in which the kernel resides. See also user space.
- matching dictionary
A dictionary of key/value pairs that describe the properties of a device or other service. The values in a matching dictionary are compared against those in a driver personality during device matching.
An I/O Kit object that represents a detected, controllable entity, such as a device or logical service. A nub may represent a bus controller, a disk, a graphics adaptor, or any number of similar entities. When it supports a specific piece of hardware, a nub is also a driver (although this is rare).
A nub supports dynamic configuration by providing a connection match point between two drivers (and, by extension, between two families). A nub can also provide services to code running in user space through a device interface. See also driver.
An object module that can be dynamically added to a running system or application.
Core Foundation Plug-in Services uses the basic code-loading facility of Core Foundation Bundle Services to provide a standard plug-in architecture, known as the Core Foundation plug-in model, for Mac apps.
- SCSI Architecture Model
A specification, approved as ANSI standard X3.270-1996, that defines a common interface standard between computers and devices such as disk drives, printers, and scanners.
- Small Computer System Interface (SCSI)
An industry standard parallel data bus that provides a consistent method of connecting computers and peripheral devices.
A service is an I/O Kit entity, based on a subclass of IOService, that has been published with the
registerServicemethod and provides certain capabilities to other I/O Kit objects. In the I/O Kit’s layered architecture, each layer is a client of the layer below it and a provider of services to the layer above it.
- user client
An in-kernel object that inherits from the IOService class and provides a connection between an in-kernel device driver or device nub and an application or process in user space. See also device interface.
- user space
Memory outside the protected partition in which the kernel resides. Applications, plug-ins, and other types of modules typically run in user space. See also kernel space.