mirror of
https://github.com/AuxXxilium/eudev.git
synced 2024-12-16 19:47:24 +07:00
Repository for eudev development
5aebfbcb62
Attached is a patch against udev-008 to send out a D-BUS message when a device node is added or removed. Using D-BUS lingo, udev acquires the org.kernel.udev service and sends out a NodeCreated or NodeDeleted signal on the org.kernel.udev.NodeMonitor interface. Each signal carries two parameters: the node in question and the corresponding sysfs path. [Note: the D-BUS concepts of service, interface, object can be a bit confusing at first glance] An example program listening for these messages looks like this #!/usr/bin/python import dbus import gtk def udev_signal_received(dbus_iface, member, service, object_path, message): [filename, sysfs_path] = message.get_args_list() if member=='NodeCreated': print 'Node %s created for %s'%(filename, sysfs_path) elif member=='NodeDeleted': print 'Node %s deleted for %s'%(filename, sysfs_path) def main(): bus = dbus.Bus(dbus.Bus.TYPE_SYSTEM) bus.add_signal_receiver(udev_signal_received, 'org.kernel.udev.NodeMonitor', # interface 'org.kernel.udev', # service '/org/kernel/udev/NodeMonitor') # object gtk.mainloop() if __name__ == '__main__': main() and this is the output when hot-plugging some usb-storage. [david@laptop udev-008]$ ~/node_monitor.py Node /udev/sda created for /block/sda Node /udev/sda1 created for /block/sda/sda1 Node /udev/sda1 deleted for /block/sda/sda1 Node /udev/sda deleted for /block/sda The patch requires D-BUS 0.20 or later while the python example program requires D-BUS from CVS as I only recently applied a patch against the python bindings. |
||
---|---|---|
docs | ||
etc/init.d | ||
extras | ||
klibc | ||
libsysfs | ||
tdb | ||
test | ||
ChangeLog | ||
COPYING | ||
FAQ | ||
klibc_fixups.c | ||
klibc_fixups.h | ||
list.h | ||
logging.c | ||
Makefile | ||
namedev_parse.c | ||
namedev.c | ||
namedev.h | ||
README | ||
TODO | ||
udev_config.c | ||
udev_sysbus_policy.conf | ||
udev-add.c | ||
udev-remove.c | ||
udev.8 | ||
udev.c | ||
udev.conf | ||
udev.h | ||
udev.permissions | ||
udev.permissions.debian | ||
udev.rules | ||
udev.rules.demo | ||
udev.spec | ||
udevdb.c | ||
udevdb.h |
udev - a userspace implementation of devfs For more information on the design, and structure of this project, see the files in the docs/ directory. To use: - You must be running a 2.6 version of the Linux kernel. - Make sure sysfs is mounted. udev will figure out where sysfs is mounted, but the traditional place for it is at /sys. You can mount it by hand by running: mount -t sysfs none /sys - Make sure you have the latest version of the linux-hotplug scripts. They are available at linux-hotplug.sf.net or from your local kernel.org mirror at: kernel.org/pub/linux/utils/kernel/hotplug/ They are required in order for udev to work properly. If for some reason you do not install the hotplug scripts, you must tell the kernel to point the hotplug binary at wherever you install udev at. This can be done by: echo "/sbin/udev" > /proc/sys/kernel/hotplug - Build the project: make - Install the project: make install This will put the udev binary in /sbin, create the /udev and /etc/udev directories, and place the udev configuration files in /etc/udev. You will probably want to edit the namedev.* files to create custom naming rules. More info on how the config files are set up are contained in comments in the files, and is located in the documentation. - Add and remove devices from the system and marvel as nodes are created and removed in /udev/ based on the device types. - If you later get sick of it, uninstall it: make uninstall Things are still quite rough, and it's a bit beyond proof of concept code. Help is very much appreciated, see the TODO file for a list of things left to be done. If you want to build using klibc, use the Makefile.klibc file: - read the klibc/klibc/README file for how to set up the linux symlink properly. - make clean - make -f Makefile.klibc and marvel at the tiny binary you just created :) Any comment/questions/concerns please let me know. greg k-h greg@kroah.com