ddioctl 设备驱动程序入口点
用途
执行 ioctl 或 Ioctlx 子例程调用中请求的特殊 I/O 操作。
语法
描述
当程序发出 ioctl 或 Ioctlx 子例程调用时,内核会调用指定设备驱动程序的 迪奥克特尔 例程。 迪奥克特尔 例程负责执行所请求的所有功能。 此外,它还必须返回由 ioctl 子例程的原始调用者指定的任何控制信息。 命令 参数中包含要执行的操作的名称。
大多数 ioctl 操作取决于所涉及的特定设备。 但是,所有 ioctl 例程都必须响应以下命令:
| 项 | 描述 |
|---|---|
| IOCINFO | 返回描述设备的 devinfo 结构 (在 /usr/include/sys/devinfo.h 文件中定义)。 (请参阅 "应用程序编程接口" 中对特定设备的特殊文件的描述。) 仅当结构的剩余字段不适用于设备时,才需要返回数据结构的前两个字段。 |
德夫旗 参数指示多种类型的信息中的一种。 它可以提供打开设备时的条件。 (这些条件随后可以通过 弗纳特尔 子例程调用进行更改。) 或者,它可以指示调用入口点的两种方式中的哪一种:
- 由文件系统代表正在使用的应用程序
- 直接由使用 fp_ioctl 内核服务的内核例程执行
因此, devflag 参数中的标志具有以下定义,如 /usr/include/sys/device.h 文件中所定义:
| 项 | 描述 |
|---|---|
| 内核 | 内核例程使用 fp_ioctl 服务调用的入口点。 |
| DREAD | 打开以进行阅读。 |
| DWRITE | 打开以进行编写。 |
| DAPPEND | 打开以进行追加。 |
| DNDELAY | 设备以非阻塞方式打开。 |
参数
执行环境
只有在进程环境中才会执行 迪奥克特尔 例程。 它应该通过将锁定内核服务与驱动程序中定义的专用锁定字结合使用来提供其数据结构的必需序列化。
返回值
迪奥克特尔 入口点可以通过返回非零返回码来向用户方式应用程序指示错误情况。 这将导致 ioctl 子程序返回 -1 值,并在 errno 全局变量中向用户模式应用程序提供返回代码。 使用的错误代码应是 /usr/include/sys/errno.h 文件中定义的值之一。
如果适用,应使用 ioctl 子例程的 POSIX 1003.1 标准中定义的返回值。