ddconfig 设备驱动程序入口点
用途
执行设备驱动程序的配置功能。
语法
参数
| 项 | 描述 |
|---|---|
| 德夫诺 | 指定主要和次要设备号。 |
| cmd | 指定要由 地址配置 例程执行的功能。 |
| 乌约普 | 指向用于描述配置信息的相关数据区的 乌约 结构。 |
描述
地址配置 入口点用来配置设备驱动程序。 可以调用此命令来执行以下任务:
- 初始化设备驱动程序。
- 终止设备驱动程序。
- 请求受支持设备的配置数据。
- 执行其他特定于设备的配置功能。
地址配置 例程由设备的 "配置" , "取消配置" 或 "更改" 方法调用。 通常,对于要支持的每个设备号 (主要和次要) ,会调用一次。 但是,这与设备无关。 特定设备方法和 地址配置 例程将确定调用它的次数。
地址配置 例程还可以提供与配置相关的其他特定于设备的功能,例如返回设备重要产品数据 (VPD)。 地址配置 例程通常由特定于设备的 "配置" 方法通过 sysconfig 子例程调用。
对于 命令 参数,设备驱动程序及其方法通常支持以下值:
| 值 | 描述 |
|---|---|
| CFG_INIT | 初始化设备驱动程序和内部数据区。 这通常涉及 德夫诺 参数指定的次要数字,以实现有效性。 设备驱动程序的 地址配置 例程还会将设备驱动程序的入口点安装在设备开关表中 (如果这是第一次调用 (针对指定的主号码))。 可通过将 德夫斯沃德 内核服务与 德夫苏 结构一起使用来完成此操作,以将设备驱动程序的入口点添加到 德夫诺 参数中提供的主设备号的设备交换表。 CFG_INIT 命令参数还应该将依赖于设备的信息 (在由调用者提供的依赖于设备的结构中找到) 复制到指定设备的静态或动态分配的保存区域中。 稍后调用 德开放 例程时,应使用此信息。 依赖于设备的结构的地址和长度在 乌约普 参数所指向的 乌约 结构中进行了描述。 乌约莫韦 内核服务可用于将与设备相关的结构复制到设备驱动程序的数据区中。 在调用 德开放 例程时,设备驱动程序会将依赖于设备的信息传递给提供设备处理程序角色的例程或其他设备驱动程序,以便对设备进行初始化。 在接收到 德开放 调用之前,初始化设备时的延迟很有用,以便延迟使用有价值的系统资源 (例如 DMA 通道和中断级别) ,直到实际需要该设备为止。 |
| CFG_TERM | 终止与指定的设备号相关联的设备驱动程序,如 德夫诺 参数所表示。 地址配置 例程确定在指定的 德夫诺 参数. 上是否有未完成的打开操作 如果没有,那么 CFG_TERM 命令处理会将该设备标记为已终止,并禁止对该设备执行任何后续打开操作。 应该释放与指定设备号关联的所有动态分配的数据区。 如果此终止会除去设备驱动程序所支持的最后一个次要数字,那么应该调用 德夫斯代尔 内核服务以从指定 德夫诺 参数的设备开关表中除去设备驱动程序的入口点。 如果在指定设备上未完成打开操作,那么将拒绝终止操作并返回相应的错误代码。 如果设备驱动程序的所有使用都已终止,那么 "取消配置" 方法随后可以卸载该驱动程序。 要确定设备驱动程序的所有使用是否都已终止,设备方法可以进行 sysconfig 子例程调用。 通过使用 sysconfig SYS_QDVSW 操作,设备方法可以了解设备驱动程序是否已从设备开关表中除去其自身。 |
| CFG_QVPD | 查询特定于设备的重要产品数据 (VPD)。 对于此函数,调用例程会设置一个 乌约 结构,该结构由 乌约普 参数指向 地址配置 例程。 此 乌约 结构定义调用者存储器中的一个区域, 地址配置 例程将在该区域中写入 VPD。 可使用 乌约莫韦 内核服务来提供数据复制操作。 |
乌约普 参数所指向的数据区有两个不同的用途,具体取决于 命令 函数。 如果已请求 CFG_INIT 命令,那么 乌约普 结构将描述要从其读取信息的设备从属数据结构 (DDS) 的位置和长度。 如果已请求 CFG_QVPD 命令,那么 乌约普 结构将描述要在其中写入重要产品数据信息的区域。 此信息的内容和格式是由特定设备方法与设备驱动程序一起建立的。
乌约莫韦 内核服务可用于方便将信息复制到此数据区中或从此数据区中复制信息。 uio 结构的格式在 /usr/include/sys/uio.h 文件中定义,并在 uio 结构中进一步描述。
执行环境
地址配置 例程及其操作仅在流程环境中进行调用。
返回值
如果未检测到指定操作的错误,那么 地址配置 例程会将返回码设置为 0。 如果要将错误返回给调用程序,那么应该提供非零返回码。 使用的返回码应该是 /usr/include/sys/errno.h 文件中定义的值之一。
如果此例程由 sysconfig 子例程调用调用,那么返回码将传递给它的调用者 (通常是设备方法)。 它通过在 errno 全局变量中显示错误代码,并向子程序提供 -1 返回代码来传递。