[PATCH] udev - switch SYSFS_file to SYSFS{file}

Here we switch the configs and man pages to the new attribute syntax.
Also the 'partition trick' is mentioned in udev.8

I think it's more clear visible now, that inside the brackets are user
supplied values used and not some magic keys handled:

  'SYSFS_dev' is now 'SYSFS{dev}'

The old syntax is still supported.
This commit is contained in:
kay.sievers@vrfy.org 2004-02-17 01:27:01 -08:00 committed by Greg KH
parent 8bbf27514c
commit 16378373cb
7 changed files with 38 additions and 31 deletions

View file

@ -5,13 +5,13 @@
BUS="scsi", PROGRAM="/bin/echo -n test-%b", RESULT="test-42:0:0:1", NAME="%c" BUS="scsi", PROGRAM="/bin/echo -n test-%b", RESULT="test-42:0:0:1", NAME="%c"
# A usb camera. # A usb camera.
BUS="usb", SYSFS_vendor="FUJIFILM", SYSFS_model="M100", NAME="camera%n" BUS="usb", SYSFS{vendor}="FUJIFILM", SYSFS{model}="M100", NAME="camera%n"
# USB Epson printer to be called lp_epson # USB Epson printer to be called lp_epson
BUS="usb", SYSFS_serial="HXOLL0012202323480", NAME="lp_epson" BUS="usb", SYSFS_serial="HXOLL0012202323480", NAME="lp_epson"
# USB HP printer to be called lp_hp # USB HP printer to be called lp_hp
BUS="usb", SYSFS_serial="W09090207101241330", NAME="lp_hp" BUS="usb", SYSFS{serial}="W09090207101241330", NAME="lp_hp"
# sound card with PCI bus id 00:0b.0 to be the first sound card # sound card with PCI bus id 00:0b.0 to be the first sound card
BUS="pci", ID="00:0b.0", NAME="dsp" BUS="pci", ID="00:0b.0", NAME="dsp"

View file

@ -23,13 +23,13 @@
BUS="scsi", PROGRAM="/bin/echo -n test-%b", RESULT="test-42:0:0:1", NAME="%c" BUS="scsi", PROGRAM="/bin/echo -n test-%b", RESULT="test-42:0:0:1", NAME="%c"
# A usb camera. # A usb camera.
BUS="usb", SYSFS_vendor="FUJIFILM", SYSFS_model="M100", NAME="camera%n" BUS="usb", SYSFS{vendor}="FUJIFILM", SYSFS{model}="M100", NAME="camera%n"
# USB Epson printer to be called lp_epson # USB Epson printer to be called lp_epson
BUS="usb", SYSFS_serial="HXOLL0012202323480", NAME="lp_epson" BUS="usb", SYSFS{serial}="HXOLL0012202323480", NAME="lp_epson"
# USB HP printer to be called lp_hp # USB HP printer to be called lp_hp
BUS="usb", SYSFS_serial="W09090207101241330", NAME="lp_hp" BUS="usb", SYSFS{serial}="W09090207101241330", NAME="lp_hp"
# sound card with PCI bus id 00:0b.0 to be the first sound card # sound card with PCI bus id 00:0b.0 to be the first sound card
BUS="pci", ID="00:0b.0", NAME="dsp" BUS="pci", ID="00:0b.0", NAME="dsp"

View file

@ -8,8 +8,8 @@ export SYSFS_PATH=$PWD/sys/
export UDEV_CONFIG_FILE=$PWD/$CONFIG export UDEV_CONFIG_FILE=$PWD/$CONFIG
cat > $RULES << EOF cat > $RULES << EOF
BUS="scsi", SYSFS_vendor="IBM-ESXS", SYSFS_model="ST336605LW !#", NAME="boot_diskX%n" BUS="scsi", SYSFS{vendor}="IBM-ESXS", SYSFS{model}="ST336605LW !#", NAME="boot_diskX%n"
BUS="scsi", SYSFS_vendor="IBM-ESXS", SYSFS_model="ST336605LW !#", NAME="boot_disk%n" BUS="scsi", SYSFS{vendor}="IBM-ESXS", SYSFS{model}="ST336605LW !#", NAME="boot_disk%n"
EOF EOF
cat > $CONFIG << EOF cat > $CONFIG << EOF

View file

@ -38,7 +38,7 @@ my @tests = (
devpath => "block/sda", devpath => "block/sda",
expected => "boot_disk" , expected => "boot_disk" ,
conf => <<EOF conf => <<EOF
BUS="scsi", SYSFS_vendor="IBM-ESXS", NAME="boot_disk%n" BUS="scsi", SYSFS{vendor}="IBM-ESXS", NAME="boot_disk%n"
KERNEL="ttyUSB0", NAME="visor" KERNEL="ttyUSB0", NAME="visor"
EOF EOF
}, },
@ -48,7 +48,7 @@ EOF
devpath => "block/sda/sda1", devpath => "block/sda/sda1",
expected => "boot_disk1" , expected => "boot_disk1" ,
conf => <<EOF conf => <<EOF
BUS="scsi", SYSFS_vendor="IBM-ESXS", NAME="boot_disk%n" BUS="scsi", SYSFS{vendor}="IBM-ESXS", NAME="boot_disk%n"
EOF EOF
}, },
{ {
@ -57,10 +57,10 @@ EOF
devpath => "block/sda/sda1", devpath => "block/sda/sda1",
expected => "boot_disk1" , expected => "boot_disk1" ,
conf => <<EOF conf => <<EOF
BUS="scsi", SYSFS_vendor="?IBM-ESXS", NAME="boot_disk%n-1" BUS="scsi", SYSFS{vendor}="?IBM-ESXS", NAME="boot_disk%n-1"
BUS="scsi", SYSFS_vendor="IBM-ESXS?", NAME="boot_disk%n-2" BUS="scsi", SYSFS{vendor}="IBM-ESXS?", NAME="boot_disk%n-2"
BUS="scsi", SYSFS_vendor="IBM-ES??", NAME="boot_disk%n" BUS="scsi", SYSFS{vendor}="IBM-ES??", NAME="boot_disk%n"
BUS="scsi", SYSFS_vendor="IBM-ESXSS", NAME="boot_disk%n-3" BUS="scsi", SYSFS{vendor}="IBM-ESXSS", NAME="boot_disk%n-3"
EOF EOF
}, },
{ {
@ -69,8 +69,8 @@ EOF
devpath => "block/sda/sda1", devpath => "block/sda/sda1",
expected => "boot_disk1" , expected => "boot_disk1" ,
conf => <<EOF conf => <<EOF
BUS="scsi", SYSFS_vendor="IBM-ESXS", SYSFS_model="ST336605LW !#", NAME="boot_diskX%n" BUS="scsi", SYSFS{vendor}="IBM-ESXS", SYSFS{model}="ST336605LW !#", NAME="boot_diskX%n"
BUS="scsi", SYSFS_vendor="IBM-ESXS", SYSFS_model="ST336605LW !#", NAME="boot_disk%n" BUS="scsi", SYSFS{vendor}="IBM-ESXS", SYSFS{model}="ST336605LW !#", NAME="boot_disk%n"
EOF EOF
}, },
{ {
@ -79,8 +79,8 @@ EOF
devpath => "block/sda/sda1", devpath => "block/sda/sda1",
expected => "boot_disk1" , expected => "boot_disk1" ,
conf => <<EOF conf => <<EOF
BUS="scsi", SYSFS_vendor="IBM-ESXS", SYSFS_model="ST336605LW !#", SYSFS_scsi_level="4", SYSFS_rev="B245", SYSFS_type="2", SYSFS_queue_depth="32", NAME="boot_diskXX%n" BUS="scsi", SYSFS{vendor}="IBM-ESXS", SYSFS{model}="ST336605LW !#", SYSFS{scsi_level}="4", SYSFS{rev}="B245", SYSFS{type}="2", SYSFS{queue_depth}="32", NAME="boot_diskXX%n"
BUS="scsi", SYSFS_vendor="IBM-ESXS", SYSFS_model="ST336605LW !#", SYSFS_scsi_level="4", SYSFS_rev="B245", SYSFS_type="0", NAME="boot_disk%n" BUS="scsi", SYSFS{vendor}="IBM-ESXS", SYSFS{model}="ST336605LW !#", SYSFS{scsi_level}="4", SYSFS{rev}="B245", SYSFS{type}="0", NAME="boot_disk%n"
EOF EOF
}, },
{ {
@ -209,7 +209,7 @@ EOF
devpath => "block/sda", devpath => "block/sda",
expected => "disk-IBM-ESXS-sda" , expected => "disk-IBM-ESXS-sda" ,
conf => <<EOF conf => <<EOF
BUS="scsi", SYSFS_vendor="IBM-ESXS", NAME="disk-%s{vendor}-%k" BUS="scsi", SYSFS{vendor}="IBM-ESXS", NAME="disk-%s{vendor}-%k"
KERNEL="ttyUSB0", NAME="visor" KERNEL="ttyUSB0", NAME="visor"
EOF EOF
}, },
@ -279,7 +279,7 @@ EOF
devpath => "class/tty/console", devpath => "class/tty/console",
expected => "TTY" , expected => "TTY" ,
conf => <<EOF conf => <<EOF
BUS="foo", SYSFS_dev="5:1", NAME="foo" BUS="foo", SYSFS{dev}="5:1", NAME="foo"
KERNEL="console", NAME="TTY" KERNEL="console", NAME="TTY"
EOF EOF
}, },
@ -289,7 +289,7 @@ EOF
devpath => "class/tty/console", devpath => "class/tty/console",
expected => "foo" , expected => "foo" ,
conf => <<EOF conf => <<EOF
SYSFS_dev="5:1", NAME="foo" SYSFS{dev}="5:1", NAME="foo"
KERNEL="console", NAME="TTY" KERNEL="console", NAME="TTY"
EOF EOF
}, },
@ -319,7 +319,7 @@ EOF
devpath => "block/sda/sda2", devpath => "block/sda/sda2",
expected => "1/2/a/b/symlink" , expected => "1/2/a/b/symlink" ,
conf => <<EOF conf => <<EOF
BUS="scsi", SYSFS_vendor="IBM-ESXS", NAME="1/2/node", SYMLINK="1/2/a/b/symlink" BUS="scsi", SYSFS{vendor}="IBM-ESXS", NAME="1/2/node", SYMLINK="1/2/a/b/symlink"
EOF EOF
}, },
{ {
@ -328,7 +328,7 @@ EOF
devpath => "block/sda/sda2", devpath => "block/sda/sda2",
expected => "1/2/symlink" , expected => "1/2/symlink" ,
conf => <<EOF conf => <<EOF
BUS="scsi", SYSFS_vendor="IBM-ESXS", NAME="1/2/a/b/node", SYMLINK="1/2/symlink" BUS="scsi", SYSFS{vendor}="IBM-ESXS", NAME="1/2/a/b/node", SYMLINK="1/2/symlink"
EOF EOF
}, },
{ {
@ -337,7 +337,7 @@ EOF
devpath => "block/sda/sda2", devpath => "block/sda/sda2",
expected => "1/2/c/d/symlink" , expected => "1/2/c/d/symlink" ,
conf => <<EOF conf => <<EOF
BUS="scsi", SYSFS_vendor="IBM-ESXS", NAME="1/2/a/b/node", SYMLINK="1/2/c/d/symlink" BUS="scsi", SYSFS{vendor}="IBM-ESXS", NAME="1/2/a/b/node", SYMLINK="1/2/c/d/symlink"
EOF EOF
}, },
{ {
@ -355,7 +355,7 @@ EOF
devpath => "block/sda", devpath => "block/sda",
expected => "boot_disk15" , expected => "boot_disk15" ,
conf => <<EOF conf => <<EOF
BUS="scsi", SYSFS_vendor="IBM-ESXS", NAME{all_partitions}="boot_disk" BUS="scsi", SYSFS{vendor}="IBM-ESXS", NAME{all_partitions}="boot_disk"
EOF EOF
}, },
{ {
@ -364,7 +364,7 @@ EOF
devpath => "class/tty/ttyUSB0", devpath => "class/tty/ttyUSB0",
expected => "visor" , expected => "visor" ,
conf => <<EOF conf => <<EOF
SYSFS_idProduct="2008", NAME="visor" SYSFS{idProduct}="2008", NAME="visor"
EOF EOF
}, },
{ {

15
udev.8
View file

@ -144,7 +144,7 @@ Match the device number on the bus, like PCI bus id.
.B PLACE .B PLACE
Match the topological position on bus, like physical port of USB device Match the topological position on bus, like physical port of USB device
.TP .TP
.BI SYSFS_ filename .BI SYSFS{ filename }
Match sysfs device attribute like label, vendor, USB serial number, SCSI UUID Match sysfs device attribute like label, vendor, USB serial number, SCSI UUID
or file system label. Up to 5 different sysfs files can be checked, with or file system label. Up to 5 different sysfs files can be checked, with
all of the values being required in order to match the rule. all of the values being required in order to match the rule.
@ -162,6 +162,13 @@ call. This key may used in any following rule after a
.B PROGRAM .B PROGRAM
call. call.
.P .P
The
.B NAME
field given with the attribute
.BR NAME{ all_partitions }
will create all 15 partitions of a blockdevice.
This may be useful for removable media devices.
.P
.RB "The " NAME " ," SYMLINK " and " PROGRAM .RB "The " NAME " ," SYMLINK " and " PROGRAM
fields support simple printf-like string substitution: fields support simple printf-like string substitution:
.TP .TP
@ -199,10 +206,10 @@ The '%' char itself.
BUS="scsi", PROGRAM="/sbin/scsi_id", RESULT="OEM 0815", NAME="disk1" BUS="scsi", PROGRAM="/sbin/scsi_id", RESULT="OEM 0815", NAME="disk1"
# USB printer to be called lp_color # USB printer to be called lp_color
BUS="usb", SYSFS_serial="W09090207101241330", NAME="lp_color" BUS="usb", SYSFS{serial}="W09090207101241330", NAME="lp_color"
# SCSI disk with a specific vendor and model number is to be called boot # SCSI disk with a specific vendor and model number is to be called boot
BUS="scsi", SYSFS_vendor="IBM", SYSFS_model="ST336", NAME="boot%n" BUS="scsi", SYSFS{vendor}="IBM", SYSFS{model}="ST336", NAME="boot%n"
# sound card with PCI bus id 00:0b.0 to be called dsp # sound card with PCI bus id 00:0b.0 to be called dsp
BUS="pci", ID="00:0b.0", NAME="dsp" BUS="pci", ID="00:0b.0", NAME="dsp"
@ -214,7 +221,7 @@ BUS="usb", PLACE="2.3", NAME="mouse1"
KERNEL="ttyUSB1", NAME="pda", SYMLINK="palmtop handheld" KERNEL="ttyUSB1", NAME="pda", SYMLINK="palmtop handheld"
# multiple USB webcams with symlinks to be called webcam0, webcam1, ... # multiple USB webcams with symlinks to be called webcam0, webcam1, ...
BUS="usb", SYSFS_model="XV3", NAME="video%n", SYMLINK="webcam%n" BUS="usb", SYSFS{model}="XV3", NAME="video%n", SYMLINK="webcam%n"
.fi .fi
.P .P
Permissions and ownership for the created device files may specified at Permissions and ownership for the created device files may specified at

View file

@ -38,7 +38,7 @@ Specify the name of the node for the device to query.
.TP .TP
.B -a .B -a
Print all Print all
.BI SYSFS_ filename .BI SYSFS{ filename }
attributes along the device chain. Useful for for finding attributes along the device chain. Useful for for finding
unique attributes to compose a rule. unique attributes to compose a rule.
.RB Needs " -p " specified. .RB Needs " -p " specified.

View file

@ -90,7 +90,7 @@ static int print_all_attributes(const char *path)
len--; len--;
} }
if (len == 0) if (len == 0)
printf(" SYSFS_%s=\"%s\"\n", attr->name, value); printf(" SYSFS{%s}=\"%s\"\n", attr->name, value);
} }
} }
printf("\n"); printf("\n");