|
|
< Previous PageNext Page > |
ioctl
APIThe ioctl
interface provides a way for an application to send certain commands or information to a device driver. These can be used for parameter tuning (though this is more commonly done with sysctl
), but can also be used for sending instructions for the driver to perform a particular task (for example, rewinding a tape drive).
The use of the ioctl
interface is essentially the same under Mac OS X as it is in other BSD-derived operating systems, except in the way that device drivers register themselves with the system. In Mac OS X, unlike most BSDs, the contents of the /dev
directory are created dynamically by the kernel. This file system mounted on /dev
is referred to as devfs. You can, of course, still manually create device nodes with mknod
, because devfs is union mounted over the root file system.
The I/O Kit automatically registers some types of devices with devfs, creating a node in /dev
. If your device family does not do that, you can manually register yourself in devfs using cdevsw_add
or bdevsw_add
(for character and block devices, respectively).
When registering a device manually with devfs, you create a struct cdevsw
or struct bdevsw
yourself. In that device structure, one of the function pointers is to an ioctl
function. You must define the particular values passed to the ioctl
function in a header file accessible to the person compiling the application.
A user application can also look up the device using the I/O Kit function call IOService::GetMatchingServices
and then use various I/O Kit calls to tune parameter instead. For more information on looking up a device driver from an application, see the document Accessing Hardware From Applications.
You can also find additional information about writing an ioctl
in The Design and Implementation of the 4.4 BSD Operating System. See the bibliography at the end of this document for more information.
< Previous PageNext Page > |
Last updated: 2006-11-07
|
Get information on Apple products.
Visit the Apple Store online or at retail locations. 1-800-MY-APPLE Copyright © 2007 Apple Inc. All rights reserved. | Terms of use | Privacy Notice |