xref: /illumos-gate/usr/src/man/man8/devlinks.8 (revision 41e0a469c3dbc14deb2b200f6ca6f6e00b5865d0)
te
Copyright (c) 2002 Sun Microsystems, Inc. All Rights Reserved.
The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
DEVLINKS 8 "Jul 15, 2002"
NAME
devlinks - adds /dev entries for miscellaneous devices and pseudo-devices
SYNOPSIS

/usr/sbin/devlinks [-d] [-r rootdir] [-t table-file]
DESCRIPTION

devfsadm(8) is now the preferred command for /dev and /devices and should be used instead of devlinks.

devlinks creates symbolic links from the /dev directory tree to the actual block- and character-special device nodes under the /devices directory tree. The links are created according to specifications found in the table-file (by default /etc/devlink.tab).

devlinks is called each time the system is reconfiguration-booted, and can only be run after drvconfig(8) is run.

The table-file (normally /etc/devlink.tab) is an ASCII file, with one line per record. Comment lines, which must contain a hash character (`#') as their first character, are allowed. Each entry must contain at least two fields, but may contain three fields. Fields are separated by single TAB characters.

The fields are: devfs-spec

Specification of devinfo nodes that will have links created for them. This specification consists of one or more keyword-value pairs, where the keyword is separated from the value by an equal-sign (`='), and keyword-value pairs are separated from one another by semicolons. The possible keywords are: type

The devinfo device type. Possible values are specified in ddi_create_minor_node (9F)

name

The name of the node. This is the portion of the /devices tree entry name that occurs before the first `@' or `:' character.

addr[n]

The address portion of a node name. This is the portion of a node name that occurs between the `@' and the `:' characters. It is possible that a node may have a name without an address part, which is the case for many of the pseudo-device nodes. If a number is given after the addr it specifies a match of a particular comma-separated subfield of the address field: addr1 matches the first subfield, addr2 matches the second, and so on. addr0 is the same as addr and matches the whole field.

minor[n]

The minor portion of a node name - the portion of the name after the `:'. As with addr above, a number after the minor keyword specifies a subfield to match.

Of these four specifications, only the type specification must always be present.
name

Specification of the /dev links that correspond to the devinfo nodes. This field allows devlinks to determine matching /dev names for the /devices nodes it has found. The specification of this field uses escape-sequences to allow portions of the /devices name to be included in the /dev name, or to allow a counter to be used in creating node names. If a counter is used to create a name, the portion of the name before the counter must be specified absolutely, and all names in the /dev/-subdirectory that match (up to and including the counter) are considered to be subdevices of the same device. This means that they should all point to the same directory, name and address under the /devices/-tree The possible escape-sequences are: \eD

Substitute the device-name (name) portion of the corresponding devinfo node-name.

\eAn

Substitute the nth component of the address component of the corresponding devinfo node name. Sub-components are separated by commas, and sub-component 0 is the whole address component.

\eMn

Substitute the nth sub-component of the minor component of the corresponding devinfo node name. Sub-components are separated by commas, and sub-component 0 is the whole minor component.

\eNn

Substitute the value of a 'counter' starting at n. There can be only one counter for each dev-spec, and counter-values will be selected so they are as low as possible while not colliding with already-existing link names. In a dev-spec the counter sequence should not be followed by a digit, either explicitly or as a result of another escape-sequence expansion. If this occurs, it would not be possible to correctly match already-existing links to their counter entries, since it would not be possible to unambiguously parse the already-existing /dev-name.

extra-dev-link

Optional specification of an extra /dev link that points to the initial /dev link (specified in field 2). This field may contain a counter escape-sequence (as described for the dev-spec field) but may not contain any of the other escape-sequences. It provides a way to specify an alias of a particular /dev name.

OPTIONS

The following options are supported: -d

Debugging mode - print out all devinfo nodes found, and indicate what links would be created, but do not do anything.

-r rootdir

Use rootdir as the root of the /dev and /devices directories under which the device nodes and links are created. Changing the root directory does not change the location of the /etc/devlink.tab default table, nor is the root directory applied to the filename supplied to the -t option.

-t table-file

Set the table file used by devlinks to specify the links that must be created. If this option is not given, /etc/devlink.tab is used. This option gives a way to instruct devlinks just to perform a particular piece of work, since just the links-types that devlinks is supposed to create can be specified in a command-file and fed to devlinks.

ERRORS

If devlinks finds an error in a line of the table-file it prints a warning message on its standard output and goes on to the next line in the table-file without performing any of the actions specified by the erroneous rule.

If it cannot create a link for some filesystem-related reason it prints an error-message and continues with the current rule.

If it cannot read necessary data it prints an error message and continues with the next table-file line.

EXAMPLES

Example 1 Using the /etc/devlink.tab Fields

The following are examples of the /etc/devlink.tab fields:

type=pseudo;name=win win\eM0
type=ddi_display framebuffer/\eM0 fb\eN0

The first example states that all devices of type pseudo with a name component of win will be linked to /dev/winx, where x is the minor-component of the devinfo-name (this is always a single-digit number for the win driver).

The second example states that all devinfo nodes of type ddi_display will be linked to entries under the /dev/framebuffer directory, with names identical to the entire minor component of the /devices name. In addition an extra link will be created pointing from /dev/fbn to the entry under /dev/framebuffer. This entry will use a counter to end the name.

FILES
/dev

entries for the miscellaneous devices for general use

/devices

device nodes

/etc/devlink.tab

the default rule-file

SEE ALSO

devfs (4FS), attributes (7), devfsadm (8), ddi_create_minor_node (9F)

BUGS

It is very easy to construct mutually-contradictory link specifications, or specifications that can never be matched. The program does not check for these conditions.