了解设备依赖关系和子设备

可以通过两种方式在配置数据库中表示一个设备对另一个设备的依赖关系。

一种方法通常表示物理连接,例如连接到特定键盘适配器的键盘设备。 键盘设备具有对键盘适配器的依赖关系,因为在配置适配器之后,才能对其进行配置。 此关系通常称为父子关系,其中适配器作为父代,键盘设备作为子代。 这些关系由 定制设备 (CuDv) 对象类中的 "父设备逻辑名" 和 "设备在其中连接描述符的位置" 表示。

第二种方法表示逻辑连接。 设备方法 可以向 定制依赖关系 (CuDep) 对象类添加标识从属设备及其所依赖的设备的对象。 从属设备被视为 一个依赖关系,而从属设备被视为 一个依赖关系。 CuDep 对象通常添加到数据库中,以表示一个设备需要访问另一个设备的情况。 例如, lft0 设备依赖于特定的键盘或显示设备。

这两种类型的依赖关系差别很大。 配置过程会在引导时使用父子依赖关系来配置组成节点的所有设备。 CuDep 依赖关系通常仅由设备的 Configure 方法用于记录它所依赖的设备的名称。

对于设备方法来说,亲子关系是越重要的。 父代/子代关系通过以下方式影响设备方法活动:

  • 如果父设备具有已配置的子代,那么无法取消配置该父设备。
  • 如果父设备具有已定义或已配置的子代,那么不能取消定义该父设备。
  • 如果未定义或配置父设备,那么无法定义子设备。
  • 如果未配置父设备,那么无法配置子设备。
  • 如果父设备具有已配置的子代,那么无法更改它的配置。 这将保证有关子代的设备驱动程序可能正在使用的父代的信息保持有效。

但是,当一个设备被列为 CuDep 对象类中另一个设备的依赖关系时,唯一的影响是防止被依赖的设备被取消定义。 依赖关系的名称对于从属设备而言很重要。 如果允许取消定义所依赖的设备,那么可以定义第三个设备并为其分配相同的名称。

依赖设备的 取消配置更改 方法的写程序不应该担心该设备是否列示为依赖关系。 如果所依赖的设备实际由其他设备打开,那么 "取消配置" 和 "更改" 操作将失败,因为它们的设备繁忙。 但是,如果依赖设备 当前处于打开状态,那么可以在不影响从属设备的情况下执行 "取消配置" 或 "更改" 操作。

可能的父子连接在预定义的连接 (PdCn) 对象类中定义。 每个可以作为父设备的预定义设备类型都在此对象类中表示。 每个连接位置 (如插槽或端口) 都有一个对象,用于描述可以在该位置连接的设备的子类。 子类用于标识每个设备,因为它指示设备的连接类型 (例如, SCSI 或 rs232)。

没有相应的预定义对象类描述可能的 CuDep 依赖关系。 可以编写一个设备方法,以便它已经知道依赖关系是什么。 如果需要预定义数据,那么可以将其添加为预定义属性 (PdAt) 对象类中从属设备的预定义属性。