From eab52c24431b4305708a7579a823585555b8f33b Mon Sep 17 00:00:00 2001 From: "kay.sievers@vrfy.org" Date: Tue, 13 Apr 2004 01:21:46 -0700 Subject: [PATCH] [PATCH] udev_dbus changes On Sun, Apr 11, 2004 at 03:51:07AM +0200, Kay Sievers wrote: > Here we change extras/dbus/* to > o install the binary in /etc/dev.d > o append .dev to the binary > o add David's copyright > o add the listener script to watch the sent dbus messages > o removed the undefined udev_log variable > o switch printf() to dbg() Here we install the binary in /usr/sbin/ and symlink it to /etc/dev.d/ with the .dev suffix. --- extras/dbus/Makefile | 7 ++++- extras/dbus/dbus-listen-test.py | 26 +++++++++++++++++++ extras/dbus/udev_dbus.c | 45 +++++++++++++++++++++++---------- 3 files changed, 63 insertions(+), 15 deletions(-) create mode 100644 extras/dbus/dbus-listen-test.py diff --git a/extras/dbus/Makefile b/extras/dbus/Makefile index 99aa33d8..04f17605 100644 --- a/extras/dbus/Makefile +++ b/extras/dbus/Makefile @@ -22,8 +22,9 @@ exec_prefix = ${prefix} etcdir = ${prefix}/etc sbindir = ${exec_prefix}/sbin usrbindir = ${exec_prefix}/usr/bin +usrsbindir = ${exec_prefix}/usr/sbin mandir = ${prefix}/usr/share/man -hotplugdir = ${etcdir}/hotplug.d/default +devddir = ${etcdir}/dev.d/default dbusdir = ${etcdir}/dbus-1/system.d configdir = ${etcdir}/udev/ initdir = ${etcdir}/init.d/ @@ -53,9 +54,13 @@ spotless: clean install-dbus-policy: $(INSTALL) -d $(DESTDIR)$(dbusdir) $(INSTALL_DATA) etc/dbus-1/system.d/udev_sysbus_policy.conf $(DESTDIR)$(dbusdir) + $(INSTALL_PROGRAM) $(PROG) $(DESTDIR)$(usrsbindir)/$(PROG) + - ln -s -f $(DESTDIR)$(usrsbindir)/$(PROG) $(DESTDIR)$(devddir)/$(PROG).dev uninstall-dbus-policy: - rm $(DESTDIR)$(dbusdir)/udev_sysbus_policy.conf + - rm $(DESTDIR)$(devddir)/$(PROG).dev + - rm $(DESTDIR)$(usrsbindir)/$(PROG) install: install-dbus-policy all diff --git a/extras/dbus/dbus-listen-test.py b/extras/dbus/dbus-listen-test.py new file mode 100644 index 00000000..6a68b5d2 --- /dev/null +++ b/extras/dbus/dbus-listen-test.py @@ -0,0 +1,26 @@ +#!/usr/bin/python + +# receives and prints the messages udev_dbus sent +# to the org.kernel.udev.NodeMonitor interface + +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() + diff --git a/extras/dbus/udev_dbus.c b/extras/dbus/udev_dbus.c index e99e92ec..4852d429 100644 --- a/extras/dbus/udev_dbus.c +++ b/extras/dbus/udev_dbus.c @@ -1,3 +1,23 @@ +/* + * udev_dbus.c + * + * Copyright (C) 2003 David Zeuthen + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 675 Mass Ave, Cambridge, MA 02139, USA. + * + */ + #include #include #include @@ -18,21 +38,18 @@ void log_message(int level, const char *format, ...) { va_list args; - if (!udev_log) - return; - va_start(args, format); vsyslog(level, format, args); va_end(args); } #endif -/** variable for the connection the to system message bus or #NULL +/* Variable for the connection the to system message bus or NULL * if we cannot connect or acquire the org.kernel.udev service */ static DBusConnection* sysbus_connection; -/** Disconnect from the system message bus */ +/* Disconnect from the system message bus */ static void sysbus_disconnect(void) { if (sysbus_connection == NULL) @@ -42,7 +59,7 @@ static void sysbus_disconnect(void) sysbus_connection = NULL; } -/** Connect to the system message bus */ +/* Connect to the system message bus */ static void sysbus_connect(void) { DBusError error; @@ -70,18 +87,18 @@ static void sysbus_connect(void) dbus_bus_acquire_service(sysbus_connection, "org.kernel.udev", 0, &error); if (dbus_error_is_set(&error)) { - printf("cannot acquire org.kernel.udev service, error %s: %s'", - error.name, error.message); + dbg("cannot acquire org.kernel.udev service, error %s: %s'", + error.name, error.message); sysbus_disconnect(); return; } } -/** Send out a signal that a device node is created +/* Send out a signal that a device node is created * - * @param devname name of the device node, e.g. /dev/sda1 - * @param path Sysfs path of device + * @param devname Name of the device node, e.g. /dev/sda1 + * @param path Sysfs path of device */ static void sysbus_send_create(const char *devname, const char *path) { @@ -105,10 +122,10 @@ static void sysbus_send_create(const char *devname, const char *path) dbus_connection_flush(sysbus_connection); } -/** Send out a signal that a device node is deleted +/* Send out a signal that a device node is deleted * - * @param devname Name of the device node, e.g. /udev/sda1 - * @param path Sysfs path of device + * @param devname Name of the device node, e.g. /udev/sda1 + * @param path Sysfs path of device */ static void sysbus_send_remove(const char *devname, const char *path) { -- 2.39.5