编写未定义方法

本文描述了 Undefine 设备方法的工作方式。 它还建议程序员编写自己的 Undefine 设备配置方法的准则。

语法

D埃夫 -我 姓名

描述

Undefine 方法从定制数据库中删除已定义的设备。 一旦删除设备,就无法对其进行配置,直到它再次由 "定义" 方法定义为止。

Undefine 方法还负责释放设备实例的主号码分配和次号码分配,并从 /dev 目录中删除设备的特殊文件。 如果向 根未成年人 子例程注册了次号码分配,那么 Undefine 方法可以释放主号码分配和次号码分配,并使用 雷尔德夫诺 子例程删除特殊文件。

根据约定, Undefine 方法的名称的前三个字符为 。 名称的其余部分 (开发) 可以是任何标识使用该方法的设备或设备组的字符 (受操作系统文件名限制的限制)。

标志

描述
-l 名称 标识要取消定义的设备的逻辑名。

编写未定义方法的准则

此任务列表旨在作为编写 "未定义" 方法的准则。 某些设备可能具有在这些任务中未解决的特殊需求。

Undefine 方法必须:

  1. 验证输入参数。 必须提供 -我 标志,以标识要取消定义的设备。
  2. 使用 odm_initialize 子例程初始化对象数据管理器 (ODM) ,并使用 odm_lock 子例程锁定配置数据库。 请参阅 "编写设备方法" 以获取示例。
  3. 检索要取消定义的设备的定制设备 (CuDv) 对象。 这是通过获取其 "设备名" 描述符与 -l 标志提供的名称相匹配的 CuDv 对象来完成的。 如果找不到具有指定名称的对象,那么此方法将在发生错误时退出。
  4. 检查设备的当前状态。 如果 "设备状态" 描述符指示设备未处于 "已定义" 状态,那么它未准备好进行取消定义。 如果是这样,那么此方法将退出并返回错误。
  5. 检查任何子设备。 此检查是通过查询 CuDv 对象类以查找其父设备逻辑名描述符与此设备的名称匹配的任何对象来完成的。 如果设备具有子设备,那么无论它们处于何种状态, Undefine 方法都将失败。 必须先取消定义所有子设备,然后才能取消定义父设备。
  6. 检查以了解此设备是否列示为其他设备的依赖关系。 这是通过查询定制依赖关系 (CuDep) 对象类以查找其依赖关系描述符与此设备的逻辑名相匹配的对象来完成的。 如果找到匹配项,那么该方法将退出并返回错误。 如果设备已列示为另一个设备的从属设备,那么不能取消定义该设备。
  7. 删除特殊文件以及主要和次要编号。 如果未迂到任何错误,那么该方法可以删除定制信息。 首先,从 /dev 目录中删除特殊文件。 接下来,删除所有次要编号分配。 如果已删除特定主号码的最后一个次号码,那么也使用 雷勒梅杰 子例程来释放该主号码。 Undefine 方法不应直接删除定制设备驱动程序 (CuDvDr)对象类中的对象,而应始终使用所提供的例程。 如果向 根未成年人 子例程注册了次编号分配,那么可以使用 雷尔德夫诺 子例程来完成上述所有操作。
  8. 从定制属性 (CuAt) 对象类中删除设备的所有属性。 只需删除其 "设备名" 描述符与此设备的逻辑名匹配的所有 CuAt 对象。 如果用于删除属性的 ODM 例程指示未删除任何对象,那么这不是错误。 这指示设备没有已从缺省值更改为其他属性。
  9. 删除设备的定制 VPD (CuVPD) 对象 (如果有)。
  10. 删除指示属于此设备的其他设备的定制依赖关系 (CuDep) 对象。
  11. 删除设备的定制设备 (CuDv) 对象。
  12. 关闭所有对象类并终止 ODM。 如果没有错误,那么退出并返回退出代码 0 (零)。

文件

描述
/dev 目录 包含设备特殊文件。