Solaris的minor device

来源:互联网 发布:java开发微信公众号 编辑:程序博客网 时间:2024/06/01 11:06
A minor device is a "personality" of a major device. For example, on my
laptop, under /devices, we have:

drwxr-xr-x   6 root     sys           13 Nov 25 21:48 pci@0,0/
crw-------   1 root     sys      183, 255 Dec 26 20:44 pci@0,0:devctl
crw-------   1 root     sys      183, 252 Dec 26 20:44 pci@0,0:intr
crw-------   1 root     sys      183, 253 Dec 26 20:44 pci@0,0:reg
drwxr-xr-x   2 root     sys            2 Dec 25 01:17 pci@2,0/
crw-------   1 root     sys       86, 255 Dec 26 20:44 pci@2,0:devctl
crw-------   1 root     sys       86, 252 Dec 26 20:44 pci@2,0:intr
crw-------   1 root     sys       86, 253 Dec 26 20:44 pci@2,0:reg

pci@0,0:devctl, pci@0,0:intr, and pci@0,0:reg are all minor devices
of major device pci@0,0. When a minor device is opened, its
corresponding major device's driver is asked to service the call.
The driver, however, automatically gets an ID code which
differentiates the call from other "personalities".

In this particular example, we use the "intr" interface to manage
all the interrupts related ioctl calls, which would allow registered
interrupts to be displayed, or rerouted to different CPUs. The "reg"
interface is used by a pcitool-like applications to arbitrarily
read or write any device's register (obviously an extremely dangerous
but useful thing to do). The two interfaces reasonably separates
operations that are moderate from that are dangerous (helpful
in requiring certain credentials). Internally, the two interfaces
are implemented very differently since the "intr" interface need
to interact with the local APICs and "regs" deals with createing
VM mappings for device registers.
原创粉丝点击