devswadd 内核服务
用途
将设备项添加到设备开关表。
语法
参数
| 项 | 描述 |
|---|---|
| 德夫诺 | 指定要与设备开关表中指定的项关联的 主要和次要设备号 。 |
| 德斯普特尔 | 指向要添加到设备切换表中的设备切换结构。 |
描述
德夫斯沃德 内核服务通常由设备驱动程序的 地址配置 例程调用,以添加或替换设备驱动程序的入口点 (在设备切换表中)。 设备开关表是按设备驱动程序的主要设备号建立索引的设备开关 (德夫苏) 结构的表。 这个结构表由内核中的设备驱动程序接口服务使用,以方便调用设备驱动程序例程。
德夫诺 参数的主要设备号部分用于指定设备交换机表中的索引, 德夫斯沃德 服务必须在该表中放置指定的设备交换机条目。 在此服务将设备开关结构复制到设备开关表之前,它会检查现有条目以确定是否有任何打开的设备正在使用它。 如果已打开的设备当前正在占用要替换的条目,那么 德夫斯沃德 服务不会执行更新。 相反,它会返回 EEXIST 错误值。 如果更新成功,那么它会返回值 0。
设备驱动程序不支持的设备开关结构中的入口点必须通过两种方式中的一种来处理。 如果对不受支持的入口点的调用应该会导致返回错误代码,那么必须将该入口点设置为结构中的 诺德夫 例程。 因此,对此入口点的任何调用都会自动调用 诺德夫 例程,该例程将返回 ENODEV 错误代码。 内核提供了 诺德夫 例程。
否则,对不受支持的入口点的调用应被视为无操作函数。 然后,应该将相应的入口点设置为 努尔利德夫 例程。 努尔利德夫 例程 (也由内核提供) 在调用时不会执行任何操作,并返回 0 返回码。
在多处理器系统上,缺省情况下,所有设备驱动程序例程都在系统引导时启动的第一个处理器上运行。 这确保与单处理器设备驱动程序兼容。 如果正在添加的设备驱动程序已设计为多处理器安全,请在以下项中设置 设备 MPSAFE 标志:d_opts传递到 德夫斯沃德 内核服务的 德夫苏 结构的字段。 然后,设备驱动程序例程将在任何可用处理器上运行。
该结构中未使用的所有其他字段都应设置为 0。 结构中的某些字段是供内核使用的; 德夫斯沃德 服务不会将这些字段复制到设备切换表中。 这些字段记录在 /usr/include/device.h 文件中。
执行环境
仅可从 流程环境 调用 德夫斯沃德 内核服务。
返回值
| 项 | 描述 |
|---|---|
| 重大安全事件数量 | 指示操作成功。 |
| EEXIST | 指示指定的设备交换机项正在使用中,无法替换。 |
| ENOMEM | 指示由于没有足够的实内存而无法锁定条目。 |
| EINVAL | 指示 德夫诺 参数的主要设备号部分超过允许的最大设备切换条目数。 |