A device number identifies a particular device and minor node in the device tree. The dev_t parameter that is required in many DDI/DKI routines is this device number.
Each device has a major number and a minor number. A device number is a major,minor pair. A long file listing shows the device number in the column where file sizes are usually listed. In the following example, the device number is 86,255. The device major number is 86, and the device minor number is 255.
% ls -l /devices/pci@0,0:devctl crw------- 1 root sys 86,255 date time /devices/pci@0,0:devctl
In the Solaris OS, the major number is chosen for you when you install the driver so that it will not conflict with any other major number. The kernel uses the major number to associate the I/O request with the correct driver code. The kernel uses this association to decide which driver to execute when the user reads or writes the device file. All devices and their major numbers are listed in the file /etc/name_to_major.
% grep 86 /etc/name_to_major pci 86
The minor number is assigned in the driver. The minor number must map each driver to a specific device instance. Minor numbers usually refer to sub-devices. For example, a disk driver might communicate with a hardware controller device that has several disk drives attached. Minor nodes do not necessarily have a physical representation.
The following example shows instances 0, 1, and 2 of the md device. The numbers 0, 1, and 2 are the minor numbers.
brw-r----- 1 root sys 85, 0 Nov 3 09:43 md@0:0,0,blk crw-r----- 1 root sys 85, 0 Nov 3 09:43 md@0:0,0,raw brw-r----- 1 root sys 85, 1 Nov 3 09:43 md@0:0,1,blk crw-r----- 1 root sys 85, 1 Nov 3 09:43 md@0:0,1,raw brw-r----- 1 root sys 85, 2 Nov 3 09:43 md@0:0,2,blk crw-r----- 1 root sys 85, 2 Nov 3 09:43 md@0:0,2,raw
In the name sd@0,0:h,, h represents a minor node. When the driver receives a request for minor node h, the driver actually receives a corresponding minor number. The driver for the sd node interprets that minor number to be a particular section of disk, such as slice 7 mounted on /export.