static int get_major_minor(struct sysfs_class_device *class_dev, struct udevice *udev)
{
int retval = -ENODEV;
-
char *dev;
dev = sysfs_get_value_from_attributes(class_dev->directory->attributes, "dev");
if (dev == NULL)
goto exit;
-
dbg("dev='%s'", dev);
if (sscanf(dev, "%u:%u", &udev->major, &udev->minor) != 2)
goto exit;
-
dbg("found major=%d, minor=%d", udev->major, udev->minor);
retval = 0;
return 0;
}
-/*
- * we possibly want to add some symlinks here
- * only numeric owner/group id's are supported
- */
static int create_node(struct udevice *dev)
{
char filename[255];
int i;
int tail;
-
strncpy(filename, udev_root, sizeof(filename));
strncat(filename, dev->name, sizeof(filename));
strcpy(dev_path, sysfs_path);
strcat(dev_path, device_name);
-
dbg("looking at '%s'", dev_path);
/* open up the sysfs class device for this thing... */
.I 0666
.br
.P
-A sample \fIudev.conf\fP might look like this:
+.RI "A sample " udev.conf " might look like this:
.sp
.nf
# udev_root - where in the filesystem to place the device nodes
.P
The rules for udev to use when naming devices may specified at
.I /etc/udev/udev.rules
-or specified by the
+or specified by the
.I udev_rules
value in the
.I /etc/udev/udev.conf
Every line in the rules file define the mapping between device attributes and
the device file name. It starts with a keyword defining the method used to
match, followed by one ore more keys to compare and the filename for the
-device. If no matching configuration is found, the default kernel device name
+device. Optional the name for a symlink targeting the node may specified.
+.br
+If no matching configuration is found, the default kernel device name
is used.
.P
The line format is:
.sp
-.I method, key,[key,...] name
+.I method, key,[key,...] name [, symlink]
.sp
where valid methods with corresponding keys are:
.TP
.B CALLOUT
calling external program, that returns a string to match
.br
-keys: \fBBUS\fP, \fBPROGRAM\fP, \fBID\fP
+.RB "keys: " BUS ", " PROGRAM ", " ID
.TP
.B LABEL
device label or serial number, like USB serial number, SCSI UUID or
file system label
.br
-keys: \fBBUS\fP, \fIsysfs_attribute\fP
+.RB "keys: " BUS ", "
+.I sysfs_attribute
.TP
.B NUMBER
device number on the bus, like PCI bus id
.br
-keys: \fBBUS\fP, \fBID\fP
+.RB "keys: " BUS ", " ID
.TP
.B TOPOLOGY
device position on bus, like physical port of USB device
.br
-keys: \fBBUS\fP, \fBPLACE\fP
+.RB "keys: " BUS ", " PLACE
.TP
.B REPLACE
string replacement of the kernel device name
.br
-key: \fBKERNEL_NAME\fP
+.RB "key: " KERNEL_NAME
.P
The methods are applied in the following order:
-.BR CALLOUT ", " LABEL ", " NUMBER ", " TOPOLOGY ", " REPLACE "."
+.BR CALLOUT ", " LABEL ", " NUMBER ", " TOPOLOGY ", " REPLACE "."
.P
-The
-.B NAME
-and
-.B PROGRAM
+.RB "The " NAME " ," SYMLINK " and " PROGRAM
fields support simple printf-like string substitution:
.TP
.B %n
-the "kernel number" of the device
+The "kernel number" of the device.
for example, 'sda3' has a "kernel number" of '3'
.TP
.B %M
-the kernel major number for the device
+The kernel major number for the device.
.TP
.B %m
-the kernel minor number for the device
+The kernel minor number for the device.
.TP
.B %b
-the bus id for the device
+The bus id for the device.
.TP
.B %c
-the CALLOUT program returned string
-(this does not work within the PROGRAM field for the obvious reason.)
+The CALLOUT program returned string.
+(This does not work within the PROGRAM field for the obvious reason.)
.TP
.B %D
Use the devfs style disk name for this device.
For partitions, this will result in 'part%n'
-If this is not a partition, it will result in 'disk'
+If this is not a partition, it will result in 'disk'.
.P
-A sample \fIudev.rules\fP might look like this:
+.RI "A sample " udev.rules " might look like this:"
.sp
.nf
# if /sbin/scsi_id returns "OEM 0815" device will be called disk1
# ttyUSB1 should always be called pda
REPLACE, KERNEL="ttyUSB1", NAME="pda"
-# USB webcams to be called webcam0, webcam1, ...
-LABEL, BUS="usb", model="WebCam Version 3", NAME="webcam%n"
+# USB webcams with symlinks to be called webcam0, webcam1, ...
+LABEL, BUS="usb", model="WebCam Version 3", NAME="video%n", SYMLINK="webcam%n"
.fi
.P
Permissions and ownership for the created device files may specified at
.I /etc/udev/udev.permissions
-or specified by the
+or specified by the
.I udev_permission
-value in the
+value in the
.I /etc/udev/udev.conf
file.
.br
If
.B udev
was built using klibc or is used before the user database is accessible (e.g.
-.B initrd
-), only numeric owner and group values may be used.
+.BR initrd "(4)), only numeric owner and group values may be used."
.sp
-A sample \fIudev.permissions\fP might look like this:
+.RI "A sample " udev.permissions " might look like this:"
.sp
.nf
#name:user:group:mode
following the '[' is a '!' then any character not enclosed is matched.
.SH "FILES"
.nf
-.ft B
-.ft
/sbin/udev udev program
/etc/udev/* udev config files
/etc/hotplug.d/default/udev.hotplug hotplug symlink to udev program