System information
The synchronize cache command is now sent to devices which have a write cache. The write cache is enabled at
startup and then disabled at shutdown. (r. 2957580).
Added kIOMessageTrayStateHasChanged and kIOMessageMediaAccessChange notifications to SCSITask User Client. (r.
2928061).
A memory leak in SCSITaskUserClient has been corrected. (r. 2767519).
SAM commands now have reasonable timeouts to prevent ill-behaved devices from hanging the system indefinitely.
(r. 2760367).
The SCSI Protocol Layer now supports the required Management functions as defined by the SCSI Architecture
Model. These functions include Target Reset, Logical Unit Reset, Abort Task, etc. (r. 2587364).
Back to top
USB Support
A set of APIs for communicating with USB devices connected to your Macintosh.
Fixed a problem with ResetPipe which did not work properly with Isoc pipes where the result was such that USB
did not function properly after an attempt to use one was made. (r. 2912416).
Implemented the following changes to USB isochronous transfers: (a) If we get an DATAOVERRUN because the whole
Transfer Descriptor was late, we change the error to kIOReturnIsoTooOld. This will allow a client to realize that all
the frames in the TD will have a kIOUSBNotSent2Err so it does not have to parse all the frames in the TD. And, (b)
When setting the aggregateStatus (status that will be returned if the completion had no error but frames in the TD
did have errors), assign a low priority to kIOReturnUnderrun. We will only return kIOReturnUnderrun if there is
NO other error in any of the frames. The underrun condition is fairly common for isoc transactions and not as
useful as more important errors. (r. 2884265).
Fixed the SetAlternateSettings function to return a failure result if there is insufficient bandwidth. (r.
2880635).
Fixed a problem with the IOUSBInterfaceUserClient such that in an asynchronous call, the user client object was
being released prior to the completion callback. (r. 2874390).
IOUSBHIDDriver now subclasses setReport. The original implementation supported getReport only. This makes it
possible to use the standard HID Manager calls to send data to a HID device. (r. 2872057).
A potential problem in the routine IOUSBInterface::handleOpen that could cause it to fail in circumstances where it
was okay to proceed has been fixed. (r. 2869674).
Implemented a session ID property for an IOUSBDevice to use in tracking a device. The session ID property changes
each time the device is re-connected. (r. 2858029).
Converted the AppleUSBMouse driver to subclass from IOHIDFamily. You can now see the Apple USB Mouse device
from the HID Explorer sample code. (r. 2855953).
Implemented support for ClassicMustSeize and ClassicMustNotSeize at the USB Interface level. This functionality
was already supported, since Mac OS X 10.1, at the USB Device level. This is discussed further in the USB SDK's
document User Mode USB Arbitration. (r. 2853912).
Implemented a fix with USB so that the Isochronous error codes are correctly returned to the caller. Previously,
the return errors were being shifted 1 extra bit resulting in incorrect results. (r. 2850929).
Fixed the GetConfiguration call so that it would not overwrite memory on return. If you call the "IOReturn
(*GetConfiguration)(void *self, UInt8 *configNum)" function passing in a buffer of memory instead of a single
UInt8 byte's address, the first byte "configNum" is correctly set, however, the 3 bytes following this location
would be overwritten. (r. 2842636).
Fixed bug that caused delays with certain USB input devices using universal HID driver. (r. 2830705).
Implemented USB suspend/resume support. (r. 2778595).
Fixed a problem with data corruption in reading audio tracks from some USB Mass Storage devices. (r. 2771845).
Fixed a problem where connecting a USB hub with multiple USB keyboards attached would result in some of the
keyboards failing to enumerate. (r. 2763848).
Fixed the IOUSBDevice::GetFullConfigurationDescriptor call so that the call is reentrant. (r. 2756249).
Fixed the SetReport call in the IOUSBHIDDriver so that it will set report values on a specified HID device. (r.
2588675).
Fixed the USB Mass Storage Class driver so that when media in a manual eject USB floppy drive is removed, the
volume will always be unmounted from the desktop. (r. 2917459).