System information

Added the ability to describe a parent object in a matching dictionary. (r. 2845592).
Fixed a problem with interruptible IOCommandGate::commandSleep() that could corrupt the driver's work loop.
(r. 2789143).
A mechanism was added to track the number of OSContainers an object is in. If the retain count goes less than the
container count the system will panic. This is to track cases where drivers are releasing too many object
references thus corrupting the I/O Registry. (r. 2781013).
Changed IOMemoryDescriptor::getSourceSegment() to no longer ignore errors from
IOMemoryDescriptor::prepare(). This avoids the rare case where callers would assume that the memory was
prepared when it actually wasn't. (r. 2757553).
Added new API IOBufferMemoryDescriptor::inTaskWithOptions.This method allocates a memory buffer with a given
size and alignment in the task's address space specified, and returns a memory descriptor instance representing
the memory. Pageability and sharing are specified with option bits. This API is useful for graphics accelerators
drivers, for example. (r. 2950553).
The constant kIOMasterPortDefault may now be passed in IOKit APIs. When the kIOMasterPortDefault constant is
used, the IOKit APIs will look up the default master port on behalf of the caller. (r. 2920131).
A new API, IOServiceGetMatchingService, has been added that allows callers to create simpler code for locating
services they require. This new call is a combination of IOServiceGetMatchingServices() and IOIteratorNext() that
saves callers from having to create iterator and retrieve the first object from it when it is known that there is
only one match. (r. 2920026).
Back to top
Mass Storage
Drivers for storage devices such as hard disks and CD-RW drives.
Fixed a problem that occurs when editing content on a disk node that (a) has content that some content driver
wishes to probe, and (b) whose driver is not loaded at the time it is needed to probe. (r. 2913406).
Fixed a bug that caused premature closure of the IOBlockStrorage driver before all of its the completion routines
had finished executing. (r. 2886160).
Added support in Storage Family to accommodate incrementally recordable file systems. For instance, udf on CD-R.
(r. 2885228).
IOBlockStorageDevice now supports 64-bit block numbers. (r. 2826537).
The new IOMedia object property kIOMediaRemovableKey and IOBlockStorageDevice object property
kIOPropertyProtocolCharacteristicsKey { kIOPropertyPhysicalInterconnectLocationKey } are now available in
IOMedia.h, IOStorageDeviceCharacteristics.h. These properties are used to describe objects as either "removable"
and "detachable". (r. 2751422).
The property IOMediaIcon was added to IOMedia objects to support custom media icons. As well the new
KextManagerCreateURLForBundleIdentifier() client function has been added for getting path to a loaded bundle so a
program can get at the bundle and its info dictionary. (r. 2566007).
Back to top
Power Manager
The Power Manager is the part of the Mac OS that controls power to the internal hardware devices of Macintosh PowerBook
computers.
Uninterruptible power supplies are now supported. A basic driver now exists for UPSes conforming to the USB
Power Class specification. The default behavior is for the system to be shut down via /sbin/halt when the UPS
battery is drained below 20% of its capacity. Developers can replace this behavior with their own UPS monitor
process.(r. 2863893). (r. 2972495).
Back to top
SCSI Architecture Model (SAM)
Support for devices conforming to the SCSI Architecture Model. This includes ATAPI, FireWire, and some USB storage
devices.
Added a new API, SetAutoSenseDataBuffer, to SCSITaskInterface to allow retrieving sense data longer than the
minimum eighteen bytes. (r. 2972370).