连接过程的一个重要部分是为设备实例创建次要节点。次要节点包含由设备和 DDI 框架导出的信息。系统使用此信息为 /devices 下的次要节点创建特殊文件。
驱动程序调用 ddi_create_minor_node(9F) 时会创建次要节点。驱动程序提供次要设备号、次要名称、次要节点类型,以及次要节点是代表块设备还是字符设备。
驱动程序可以为设备创建任意数量的次要节点。Solaris DDI/DKI 期望某些类别的设备具有以特定格式创建的次要节点。例如,期望磁盘驱动程序为连接的每个物理磁盘实例创建 16 个次要节点。将创建八个代表块设备接口 a - h 的次要节点,另外八个次要节点代表字符设备接口 a,raw - h,raw。
传递给 ddi_create_minor_node(9F) 的次要设备号全部由驱动程序定义。次要设备号通常是设备实例编号和次要节点标识符的编码。在前面的示例中,驱动程序会为每个次要节点创建次要设备号,方法是将设备的实例编号左移三位,再将该结果与次要节点索引进行“或”运算。次要节点索引值的范围介于 0 和 7 之间。请注意,次要节点 a 和 a,raw 共用同一次要设备号。这些次要节点根据传递到 ddi_create_minor_node() 的 spec_type 参数来区分。
传递给 ddi_create_minor_node(9F) 的次要节点类型对设备类型进行分类,如磁盘、磁带、网络接口、帧缓存器等。
下表列出了可以创建的可能的节点类型。
表 6–1 可能节点类型
常量 |
说明 |
---|---|
DDI_NT_SERIAL |
串行端口 |
DDI_NT_SERIAL_DO |
拨出端口 |
DDI_NT_BLOCK |
硬盘 |
DDI_NT_BLOCK_CHAN |
带有通道或目标编号的硬盘 |
DDI_NT_CD |
ROM 驱动器 (CD-ROM) |
DDI_NT_CD_CHAN |
带有通道或目标编号的 ROM 驱动器 |
DDI_NT_FD |
软盘 |
DDI_NT_TAPE |
磁带机 |
DDI_NT_NET |
网络设备 |
DDI_NT_DISPLAY |
显示设备 |
DDI_NT_MOUSE |
鼠标 |
DDI_NT_KEYBOARD |
键盘 |
DDI_NT_AUDIO |
音频设备 |
DDI_PSEUDO |
通用的伪设备 |
节点类型 DDI_NT_BLOCK、DDI_NT_BLOCK_CHAN、DDI_NT_CD 和 DDI_NT_CD_CHAN 会使 devfsadm(1M) 将设备实例标识为磁盘,并在 /dev/dsk 或 /dev/rdsk 目录中创建名称。
节点类型 DDI_NT_TAPE 会使 devfsadm(1M) 将设备实例标识为磁带,并在 /dev/rmt 目录中创建名称。
节点类型 DDI_NT_SERIAL 和 DDI_NT_SERIAL_DO 会使 devfsadm(1M) 执行以下操作:
将设备实例标识为串行端口
在 /dev/term 目录中创建名称
向 /etc/inittab 文件中添加项
供应商提供的字符串应包括使字符串唯一的标识值,如名称或股票名称。该字符串可与 devfsadm(1M) 和 devlinks.tab 文件(请参见 devlinks(1M) 手册页)一起使用以在 /dev 中创建逻辑名称。