From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kay Sievers Date: Sun, 07 Dec 2003 17:45:43 +0000 Subject: Re: [udev] experimental (very simple) SYMLINK creation MIME-Version: 1 Content-Type: multipart/mixed; boundary="1ccMZA6j1vT5UqiK" Message-Id: List-Id: References: In-Reply-To: To: linux-hotplug@vger.kernel.org --1ccMZA6j1vT5UqiK Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Sun, Dec 07, 2003 at 01:35:08AM -0800, Greg KH wrote: > > > On Fri, Dec 05, 2003 at 05:24:33AM +0100, Kay Sievers wrote: > > > > here is a experimental symlink creation patch - for discussion, > > > > in which direction we should go. > > Very nice, applied. I should wait a few days all the time before > applying your patches :) Oh, so I have the time to discuss it with myself :) What do you think? Should we allow multiple symlinks? Separated by which character? So we may simply loop over the field and create more than one: ..., SYMLINK="webcam%n:camera/%n:v4l/video%n" thanks, Kay Attached is a trivial cleanup patch: 01-cleanup_man+remove_symlink_comment.diff remove "want symlinks" text from udev-add.c mention SYMLINK in man page man page format cleanup man page example for SYMLINK --1ccMZA6j1vT5UqiK Content-Type: text/plain; charset=us-ascii Content-Disposition: inline; filename="01-cleanup_man+remove_symlink_comment.diff" diff -Nru a/udev-add.c b/udev-add.c --- a/udev-add.c Sun Dec 7 16:30:52 2003 +++ b/udev-add.c Sun Dec 7 16:30:52 2003 @@ -53,18 +53,15 @@ 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; @@ -100,10 +97,6 @@ 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]; @@ -115,7 +108,6 @@ int i; int tail; - strncpy(filename, udev_root, sizeof(filename)); strncat(filename, dev->name, sizeof(filename)); @@ -238,7 +230,6 @@ 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... */ diff -Nru a/udev.8 b/udev.8 --- a/udev.8 Sun Dec 7 16:30:52 2003 +++ b/udev.8 Sun Dec 7 16:30:52 2003 @@ -63,7 +63,7 @@ .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 @@ -85,7 +85,7 @@ .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 @@ -94,73 +94,73 @@ 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 @@ -178,15 +178,15 @@ # 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 @@ -197,10 +197,9 @@ 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 @@ -227,8 +226,6 @@ 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 --1ccMZA6j1vT5UqiK-- ------------------------------------------------------- This SF.net email is sponsored by: IBM Linux Tutorials. Become an expert in LINUX or just sharpen your skills. Sign up for IBM's Free Linux Tutorials. Learn everything from the bash shell to sys admin. Click now! http://ads.osdn.com/?ad_id=1278&alloc_id=3371&op=click _______________________________________________ Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net Linux-hotplug-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel