Commit Graph

15 Commits

Author SHA1 Message Date
kay.sievers@vrfy.org 808423c90c [PATCH] small cleanup udev-remove.c
Here is a small cleanup. It replaces the malloc in udev-remove.c
with a struct, like we do in udev-add.c
2005-04-26 21:13:10 -07:00
kay.sievers@vrfy.org a56ef38286 [PATCH] udev-remove.c cleanups
I've moved the malloc out of the udevdb into udev-remove to free the
struct after use and not to allocate a different struct in the case the
device is not in the data base. I seems a bit easier to read.
2005-04-26 21:13:09 -07:00
kay.sievers@vrfy.org a81805b9af [PATCH] bug in udev-remove.c
Uups, we have a bug in udev-remove.c.

udev segfaults with NULL-pointer, if the device is not in the database:

  ./test.block: line 29:  4844 Segmentation fault      $BIN block
  Dec 17 22:47:42 pim udev[4882]: udev_remove_device: '/block/sdy' not found in database, falling back on default name
  Dec 17 22:47:42 pim udev[4882]: udev_remove_device: name is '(null)'
2005-04-26 21:13:09 -07:00
kay.sievers@vrfy.org 4763256c65 [PATCH] allow multiple symlinks
Here is a patch to allow the creation of multiple symlinks.
The names must be separated by a space character.


REPLACE, KERNEL="ttyUSB0", NAME="visor", SYMLINK="first-%n second-%n third-%n"

results in:

Dec  9 05:28:51 pim udev[12019]: create_node: mknod(udev-root/visor, 020666, 188, 0)
Dec  9 05:28:51 pim udev[12019]: create_node: symlink 'udev-root/first-0' to node 'visor' requested
Dec  9 05:28:51 pim udev[12019]: create_node: symlink(./visor, udev-root/first-0)
Dec  9 05:28:51 pim udev[12019]: create_node: symlink 'udev-root/second-0' to node 'visor' requested
Dec  9 05:28:51 pim udev[12019]: create_node: symlink(./visor, udev-root/second-0)
Dec  9 05:28:51 pim udev[12019]: create_node: symlink 'udev-root/third-0' to node 'visor' requested
Dec  9 05:28:51 pim udev[12019]: create_node: symlink(./visor, udev-root/third-0)
2005-04-26 21:13:07 -07:00
greg@kroah.com 7ac0feeb60 [PATCH] move all of the DBUS logic into one file and remove all of the #ifdef crud from the main code. 2005-04-26 21:13:06 -07:00
david@fubar.dk 5aebfbcb62 [PATCH] D-BUS patch for udev-008
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.
2005-04-26 21:13:06 -07:00
kay.sievers@vrfy.org 3d150dfb28 [PATCH] experimental (very simple) SYMLINK creation
> > here is a experimental symlink creation patch - for discussion,
> > in which direction we should go.
> > It is possible now to define SYMLINK= after the NAME= in udev.rules.
> > The link is relative to the node, but the path is not optimized now
> > if the node and the link are in the same nested directory.
> > Only one link is supported, cause i need to sleep now :)
> >
> > 06-simple-symlink-creation.diff
> >   simple symlink creation
> >   reorganized udev-remove to have access to the symlink field
> >   subdir creation/removal are functions now
> >   udev-test.pl tests for link creation/removal

Here is a new version with relative link target path optimization
an better tests in udev-test.pl:

LABEL, BUS="scsi", vendor="IBM-ESXS", NAME="1/2/a/b/node", SYMLINK="1/2/c/d/symlink"

  Dec  7 06:48:34 pim udev[13789]: create_node: symlink 'udev-root/1/2/c/d/symlink' to node '1/2/a/b/node' requested
  Dec  7 06:48:34 pim udev[13789]: create_path: created 'udev-root/1/2/c'
  Dec  7 06:48:34 pim udev[13789]: create_path: created 'udev-root/1/2/c/d'
  Dec  7 06:48:34 pim udev[13789]: create_node: symlink(../../a/b/node, udev-root/1/2/c/d/symlink)
2005-04-26 21:13:06 -07:00
kay.sievers@vrfy.org f7b4eca455 [PATCH] overall whitespace + debug text conditioning
01-overall-whitespace+debug-text-conditioning.diff
  o cleanup whitespace
  o clarify a few comments
  o enclose all printed debug string values in ''
2005-04-26 21:13:03 -07:00
kay.sievers@vrfy.org 218eae8727 [PATCH] add support for subdirs
support subdirectory creation/removal for NAME="/devfs/is/crazy/video0"
  create parent subdirs for device node if needed
  remove subdirs when last node is removed
2005-04-26 21:06:23 -07:00
greg@kroah.com c056c5141b [PATCH] make config files, sysfs root, and udev root configurable from config variables
This will make running tests a lot simpler.
2005-04-26 21:01:42 -07:00
greg@kroah.com 5840bc63e2 [PATCH] major database cleanups
Now we standardise on a struct udevice to pass around, and store in the
database.  This cleaned up the database code a lot.
2005-04-26 21:01:42 -07:00
greg@kroah.com a9ce0a410e [PATCH] more database work. Now we only store the info we really need right now.
Also delete the record after the device is gone, and fix up a memory leak.
2005-04-26 21:01:42 -07:00
greg@kroah.com ca99986023 [PATCH] got "remove of named devices" working.
database code still needs some major cleanup.
2005-04-26 21:01:41 -07:00
dsteklof@us.ibm.com 8e41d35d76 [PATCH] udevdb prototype
Here's an "idea" of what I had in mind for udevdb. Let me preface the
code with a few remarks:

1) I was expecting to write this udevdb for udev to keep track of
devices. I was planning an external package that depends upon udev
to provide an external API to the udevdb database. The calls for the
interface would be read only access. Not sure how you want to do
packaging, if having a separate package is ok or having it included
in udev.

2) I created it as it is because udev isn't a daemon. So, the open
database call doesn't take any parameters. My plan was to create a
udevdb_init function that took arguments for initializing the db
to start, where you could specify in memory only or a file location.
This can all be filled in.

3) I hacked the Makefile to get it to work. Not sure how you'd want
that in the future.

4) This assumes TDB has been installed elsewhere, you would need to
edit your Makefile and point it to the header and library locations.
How do you want to do TDB in udev? Do you want to just reference it
and make udev dependent on that package being installed. Or should
we do what samba does and include a limited tdb version in udev?

5) Again, I hacked udev into your existing code. In the future, I'd
probably make a function around the filling out the udevice before
calling the store command. Didn't know if you wanted to change
your add device function to use struct udevice rather than having
everything separate.

6) Not sure what we should include in the udevice structure that's stored
by udev. I made a stab at a first shot - we can add and remove of course,
this was a first pass. I've come to realize - with you including libsysfs
in udev, the "external" interface that references udevdb could make
use of getting information from through libsysfs from sysfs and doesn't
need to be in udevdb.

7) I could write a namedevdb for namedev's device management if you
wanted.
2005-04-26 21:01:40 -07:00
greg@kroah.com ea733a2f00 [PATCH] split udev main logic into udev-add and udev-remove. 2005-04-26 21:01:39 -07:00