On Sat, 2009-07-04 at 13:52 -0400, Andy Walls wrote:
> Hans,
>
> The inline source file at the end of this post is a small program I used
> to play with libudev to see if it would complement the media controller
> concept (as you suspected it would).
>
> Documentation on the libudev calls is here:
>
> http://www.kernel.org/pub/linux/utils/kernel/hotplug/libudev/
>
> The test program I wrote takes a (type,major,minor) tuple and lists the
> device node and device symlinks as fetched by libudev.
>
> My test setup was a little strange since libudev is no longer maintained
> separately but is bundled in with udev. On my Fedora 9 system I have
> udev v124 (Fedora 9 stock) and libudev v143 (custom built from the udev
> 143 source).
>
> Here's some output:
>
> $ ./finddev -c -M 81 -m 9
> Requested device: type 'c', major 81, minor 9
> Device directory path: '/dev'
> Device node: '/dev/video0'
> Device link: '/dev/video'
>
> $ ls -alR /dev/* | grep '[ /]video0'
> lrwxrwxrwx 1 root root 6 2009-07-04 08:34 /dev/video -> video0
> crw-rw----+ 1 root root 81, 9 2009-07-04 08:34 /dev/video0
>
> (OK for video nodes)
>
>
> $ ./finddev -c -M 116 -m 6
> Requested device: type 'c', major 116, minor 6
> Device directory path: '/dev'
> Device node: '/dev/snd/pcmC0D0p'
>
> $ ls -alR /dev/* | grep '[ /]pcmC0D0p'
> crw-rw----+ 1 root root 116, 6 2009-07-04 13:43 pcmC0D0p
>
> (OK for ALSA PCM stream nodes).
>
>
> Do you have any other particular questions about libudev's capabilities?
OK, so more tests. Two Major groups: with udev still running and with
udev not running (killed after I log in).
Case 1:
- udev running:
- Adding a manual symlink
# cd /dev
# ln -s video0 mpeg0
Result: finddev using libudev doesn't find the manual symlink
Case 2:
- udev running
- A manual mknod
# cd /dev
# mknod mpeg0 c 81 9
Result: finddev doesn't find the manually created device node
Case 3:
- same as case 2, but manually delete /dev/video0
Result: finddev reports /dev/video0 ! :(
Case 4:
- same as case 3
- add to 50-udev-default.rules:
KERNEL=="video[0-9]*", SYMLINK+="mpeg%n"
- Reload udev rules
udevadm control --reload_rules
udevadm trigger --subsystem-match=video4linux
Result: findddev reports the new '/dev/mpeg0' symlink for /dev/video0 as
well as the the '/dev/video' synmlink and the '/dev/video0' device
node. :)
Case 5:
- same as case 3
- add to 50-udev-default.rules:
KERNEL=="video[0-9]*", NAME="mpeg%n"
- Reload udev rules
udevadm control --reload_rules
udevadm trigger --subsystem-match=video4linux
Result: SELinux gripes at me because HAL is allowed to acces the
attributes of /dev/mpeg*. :)
finddev reports the new /dev/mpeg0 and the /dev/video symlink to it and
they both exist in the filesystem. :)
Case 6:
- after case 5
- kill udevd. :)
Result: finddev finds /dev/mpeg0 and the /dev/video symlink
Case 7:
- after case 6:
- manually remove /dev/mpeg0 and /dev/video
Result: finddev reports /dev/mpeg0 and the /dev/video symlink. :?
Apparently libudev uses what's in the udev database and /sys but doesn't
look in the /dev directory for manual actions, even when udevd is dead.
Regards,
Andy
> Regards,
> Andy
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html