DEVLINKS(8) Maintenance Commands and Procedures DEVLINKS(8)

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:

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


\An
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.


\Mn
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.


\Nn
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\M0
type=ddi_display framebuffer/\M0 fb\N0


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.

July 15, 2002 DEVLINKS(8)