编写设备驱动程序

列显系统配置命令接口

prtconf(1M) 命令已得到增强,可以显示内核设备使用信息。缺省的 prtconf( 1M) 输出没有变化。如果在 prtconf(1M) 命令中指定详细选项 (-v),则会显示设备使用信息。如果在 prtconf(1M) 命令行上指定特定设备的路径,则会显示有关该设备的使用信息。

prtconf -v

显示设备次要节点和设备使用信息。显示内核使用方和每个内核使用方当前打开的次要节点。

prtconf path

显示由 path 指定的设备的设备使用信息。

prtconf -a path

显示由 path 指定的设备的设备使用信息,以及作为 path 的祖先的所有设备节点。

prtconf -c path

显示由 path 指定的设备的设备使用信息,以及作为 path 的子节点的所有设备节点。


示例 14–6 设备使用信息

如果需要有关特定设备的使用信息,path 参数的值可以是任何有效的设备路径。


% prtconf /dev/cfg/c0
SUNW,isptwo, instance #0


示例 14–7 祖先节点使用信息

要显示有关特定设备的使用信息以及作为其祖先的所有设备节点,请在 prtconf(1M) 命令中指定 -a 标志。祖先包括直到设备树的根的所有节点。如果在 prtconf(1M) 命令中指定 -a 标志,则还必须指定设备的 path 名称。


% prtconf -a /dev/cfg/c0
SUNW,Sun-Fire
    ssm, instance #0
        pci, instance #0
            pci, instance #0
                SUNW,isptwo, instance #0


示例 14–8 子节点使用信息

要显示有关特定设备的使用信息以及作为其子节点的所有设备节点,请在 prtconf(1M) 命令中指定 -c 标志。如果在 prtconf(1M) 命令中指定 -c 标志,则还必须指定设备的 path 名称。


% prtconf -c /dev/cfg/c0
SUNW,isptwo, instance #0
    sd (driver not attached)
    st (driver not attached)
    sd, instance #1
    sd, instance #0
    sd, instance #6
    st, instance #1 (driver not attached)
    st, instance #0 (driver not attached)
    st, instance #2 (driver not attached)
    st, instance #3 (driver not attached)
    st, instance #4 (driver not attached)
    st, instance #5 (driver not attached)
    st, instance #6 (driver not attached)
    ses, instance #0 (driver not attached)
    ...


示例 14–9 分层和设备次要节点信息-键盘

要显示有关特定设备的设备分层和设备次要节点信息,请在 prtconf(1M) 命令中指定 -v 标志。


% prtconf -v /dev/kbd
conskbd, instance #0
    System properties:
        ...
    Device Layered Over:
        mod=kb8042 dev=(101,0)
            dev_path=/isa/i8042@1,60/keyboard@0
    Device Minor Nodes:
        dev=(103,0)
            dev_path=/pseudo/conskbd@0:kbd
                spectype=chr type=minor
                dev_link=/dev/kbd
        dev=(103,1)
            dev_path=/pseudo/conskbd@0:conskbd
                spectype=chr type=internal
            Device Minor Layered Under:
                mod=wc accesstype=chr
                    dev_path=/pseudo/wc@0

本示例中,/dev/kbd 设备所在层位于硬件键盘设备 (/isa/i8042@1,60/keyboard@0) 之上。另外,本示例中,/dev/kbd 设备具有两个设备次要节点。第一个次要节点具有可用于访问该节点的 /dev 链接。第二个次要节点是一个无法通过文件系统访问的内部节点。wc 驱动程序(即工作站控制台)已经打开了第二个次要节点。请将本示例的输出与示例 14–12 的输出进行比较。



示例 14–10 分层和设备次要节点信息-网络设备

本示例说明哪些设备正在使用当前检测到的网络设备。


% prtconf -v /dev/iprb0
pci1028,145, instance #0
    Hardware properties:
        ...
    Interrupt Specifications:
        ...
    Device Minor Nodes:
        dev=(27,1)
            dev_path=/pci@0,0/pci8086,244e@1e/pci1028,145@c:iprb0
                spectype=chr type=minor
                alias=/dev/iprb0
        dev=(27,4098)
            dev_path=<clone>
            Device Minor Layered Under:
                mod=udp6 accesstype=chr
                    dev_path=/pseudo/udp6@0
        dev=(27,4097)
            dev_path=<clone>
            Device Minor Layered Under:
                mod=udp accesstype=chr
                    dev_path=/pseudo/udp@0
        dev=(27,4096)
            dev_path=<clone>
            Device Minor Layered Under:
                mod=udp accesstype=chr
                    dev_path=/pseudo/udp@0

本示例中,在采用 udpudp6 的情况下链接了 iprb0 设备。请注意,此处并未显示指向采用 udpudp6 的次要节点的任何路径。本示例中未显示任何路径是因为次要节点是通过对 iprb 驱动程序执行 clone 打开操作创建的,因此不存在可以访问这些节点的文件系统路径。请将本示例的输出与示例 14–11 的输出进行比较。