
Apple delivers industry-leading hardware based on popular hardware and software standards, combined with
state-of-the-art 64-bit Intel microprocessor technology. Apple's own hardware is integrated with the Mac OS X operating system,
resulting in seamless operation for many hardware devices. Thanks to Apple's support of many common industry standards, developers can
create hardware products that enhance the Mac OS X user experience. Mac OS X also supports the latest storage device standards, including Compact Flash,
Smart Media, Memory Stick, XD, Mini SD, Memory Stick Duo Pro and Transflash.
EFI, the Extensible Firmware Interface, controls the Mac OS X boot process. EFI initializes a minimal set of hardware, then loads and executes the boot program. EFI can be extended both by both hardware vendors and
software vendors, and it provides a standard set of interfaces to the hardware. It's the way to bring your boot device, whether a hardware RAID or graphics device, or even something more exotic, to Mac OS X.
Mac OS X provides the HID (Human Interface Device) Manager to support access to any devices that conform to the USB HID specification. While this is most commonly used for communicating with input devices, a number of other devices also use HID descriptors, and can be accessed using the same mechanism. The HID Manager handles most aspects of device and queue management, and provides simplified, global interaction with managed
HID devices. In fact, you can discover devices and begin to receive input
events using only five API methods! There are even mechanisms to apply device calibration settings such as granularity, dead zone, and saturation.
On Mac OS X, the I/O Kit is the device driver subsystem of Darwin, the
open-source core operating system. Darwin's modular design lets you dynamically
load device drivers that are created using I/O Kit's object-oriented programming
framework. The I/O Kit supports dynamic and automatic device configuration
(plug-and-play), power management, preemptive multitasking, and
symmetric multiprocessing. The I/O Kit
also allows high-level application software to access hardware.
Device drivers are implemented on Mac OS X as kernel extensions that load
dynamically when matching hardware devices are detected. Mac OS X supports both 32-bit and 64-bit drivers. The I/O Kit provides an object-oriented
environment for developing device drivers, making it easier for you to
accommodate the features of Mac OS X. It does this by providing a set of C
functions and C++ classes, implementing object-oriented abstractions common to
various families of drivers such as USB and FireWire. You can in turn implement
vendor-specific drivers by subclassing. Writing device drivers is much quicker
and more efficient using the I/O Kit than a procedural model, and the code
reusability fostered by object orientation decreases the memory footprint of
drivers.
For many device types, such as cameras, scanners, and printers, the I/O Kit also provides a device interface that enables
an application to communicate with and control a device from user space. This often means you do not need to write a complex, in-kernel driver. The
I/O Kit provides high-level APIs that Carbon, Cocoa, and UNIX-based
applications can use to handle many of their hardware-access needs.
The I/O Kit accommodates and augments native features and capabilities of Mac OS
X, particularly those of the kernel environment. The I/O Kit adds threading,
communication, and data-management primitives for dealing with issues related to
multiprocessing, task control, and I/O-transfers; and a robust, efficient
match-and-load mechanism that scales well to all bus types.
When you install the Apple Developer Tools, everything you need to work with the
I/O Kit is automatically installed, and the frameworks are built into Xcode. If
you are looking for a starting point for a kernel extension or in-kernel driver
project in Xcode, you can select either Generic Kernel Extension or I/O Kit
Driver as your project type; Xcode includes the header files, Kernel
Framework and documentation. Sample code is also installed on your drive when
you install the Developer Tools.
For news, updates and links to other ADC content related to Hardware & Drivers,
return to the Hardware & Drivers topic page.
Updated: 2007-10-26
|