Kernel Functions for Drivers ddi_create_minor_node(9F)
NAME
ddi_create_minor_node - Create a minor node for this device
SYNOPSIS
#include
#include
int ddi_create_minor_node(dev_info_t *dip, char *name, int spec_type,
minor_t minor_num, char *node_type, int flag);
INTERFACE LEVEL
Solaris DDI specific (Solaris DDI).PARAMETERS
dip A pointer to the device's dev_info structure.
name The name of this particular minor device.spec_type S_IFCHR or S_IFBLK for character or block
minor devices respectively.minor_num The minor number for this particular minor
device.node_type Any string literal that uniquely identifies
the type of node. The following predefined node types are provided with this release:DDI_NT_SERIAL For serial ports
DDI_NT_SERIAL_MB For on board serial
portsDDI_NT_SERIAL_DO For dial out ports
DDI_NT_SERIAL_MB_DO For on board dial out
portsDDI_NT_BLOCK For hard disks
SunOS 5.11 Last change: 14 Dec 2004 1
Kernel Functions for Drivers ddi_create_minor_node(9F)
DDI_NT_BLOCK_CHAN For hard disks with
channel or target numbersDDI_NT_CD For CDROM drives
DDI_NT_CD_CHAN For CDROM drives with
channel or target numbersDDI_NT_FD For floppy disks
DDI_NT_TAPE For tape drives
DDI_NT_NET For DLPI style 1 or
style 2 network dev-
icesDDI_NT_DISPLAY For display devices
DDI_PSEUDO For pseudo devices
flag If the device is a clone device then this flagis set to CLONE_DEV else it is set to 0.
DESCRIPTION
ddi_create_minor_node() provides the necessary information
to enable the system to create the /dev and /devices hierar-
chies. The name is used to create the minor name of theblock or character special file under the /devices hierar-
chy. At-sign (@), slash (/), and space are not allowed. The
spec_type specifies whether this is a block or character
device. The minor_num is the minor number for the device.
The node_type is used to create the names in the /dev
hierarchy that refers to the names in the /devices hierar-
chy. See disks(1M), ports(1M), tapes(1M), devlinks(1M). Finally flag determines if this is a clone device or not, and what device class the node belongs to.RETURN VALUES
ddi_create_minor_node() returns:
SunOS 5.11 Last change: 14 Dec 2004 2
Kernel Functions for Drivers ddi_create_minor_node(9F)
DDI_SUCCESS Was able to allocate memory, create the
minor data structure, and place it into the linked list of minor devices for this driver.DDI_FAILURE Minor node creation failed.
CONTEXT
The ddi_create_minor_node() function can be called from user
context. It is typically called from attach(9E) or ioctl(9E).EXAMPLES
Example 1 Create Data Structure Describing Minor Device with Minor Number of 0 The following example creates a data structure describing a minor device called foo which has a minor number of 0. It isof type DDI_NT_BLOCK (a block device) and it is not a clone
device.ddi_create_minor_node(dip, "foo", S_IFBLK, 0, DDI_NT_BLOCK, 0);
SEE ALSO
add_drv(1M), devlinks(1M), disks(1M), drvconfig(1M),
ports(1M), tapes(1M), attach(9E), ddi_remove_minor_node(9F)
Writing Device Drivers NOTESIf the driver is for a network device (node_type
DDI_NT_NET), note that the driver name will undergo the
driver name constraints identified in the NOTES section of dlpi(7P). Additionally, the minor name must match the driver name for a DLPI style 2 provider. If the driver is a DLPI style 1 provider, the minor name must also match the driver name with the exception that the ppa is appended to the minor name.Non-gld(7D)-based DLPI network streams drivers are
encouraged to switch to gld(7D). Failing this, a driver thatcreates DLPI style-2 minor nodes must specify CLONE_DEV
for its style-2 ddi_create_minor_node() nodes and use
qassociate(9F). A driver that supports both style-1 and
style-2 minor nodes should return DDI_FAILURE for
SunOS 5.11 Last change: 14 Dec 2004 3
Kernel Functions for Drivers ddi_create_minor_node(9F)
DDI_INFO_DEVT2INSTANCE and DDI_INFO_DEVT2DEVINFO getinfo(9E)
calls to style-2 minor nodes. (The correct association is
already established by qassociate(9F)). A driver that onlysupports style-2 minor nodes can use ddi_no_info(9F) for its
getinfo(9E) implementation. For drivers that do not follow these rules, the results of a modunload(1M) of the driver or a cfgadm(1M) remove of hardware controlled by the driver are undefined. WARNINGDrivers must remove references to GLOBAL_DEV, NODEBOUND_DEV,
NODESPECIFIC_DEV, and ENUMERATED_DEV to compile under
Solaris 10 and later versions.SunOS 5.11 Last change: 14 Dec 2004 4