Commit Graph

37 Commits

Author SHA1 Message Date
dsteklof@us.ibm.com bcbe2d8e7d [PATCH] libsysfs 0.4.0 patch
Ananth released sysfsutils 0.4.0 last night, I'm sure you saw the email.
Here's a patch with the latest changes from the pre-patch I already
gave you. It includes sysfs_get_device_parent(), which you said you
needed. I've run your test scripts and I've built scsi_id. Please
play around with this and check it out.

There are quite a few changes. Please do not access
structure pointers, like sysfs_device's parent, directly like
dev->parent. Please use the "get" function to retrieve. The functions
load things on demand and refresh views under the covers.
2005-04-26 21:13:09 -07:00
dsteklof@us.ibm.com 5d4754f195 [PATCH] pre-libsysfs-0.4.0 patch
I am sending you a pre-release patch. It's everything that's in our
current CVS tree. It adds the functionality you've been looking for. Please
play with this before checking it into your tree, I'd like to know if
it's ok with you or if you find problems. I have tested this out with
test.all and the perl regression test. Let me know what you think.

Still need to do more testing for our work and add some more functions
related to the changes.

I've gone into namedev.c and udev-add.c to make the necessary changes
in line with the library. I have not gone and edited any of the "extras".


Changes:

1) Libsysfs object structures work more as handles now, their included
directories or devices are labeled private. If you need attributes
from a sysfs_class_device, call the available function and don't access
the directory directly. Same holds true for a sysfs_class_device
sysfs_device. Do not access the link directly but call the function
sysfs_get_classdev_device() instead. We only populate entries upon
request, makes things faster and uses less memory.

2) Added sysfs_get_classdev_parent() as requested.

3) Changed getpagesize to sysconf.

4) Added sysfs_refresh_attributes function for refreshing views of
attribute lists. We still need to add refresh for links and subdirs. All
udev needs to do is keep calling sysfs_get_classdev_attr() and that will
internally call the refresh routine.
2005-04-26 21:13:07 -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
kay.sievers@vrfy.org c6c13c3181 [PATCH] cleanup man & remove symlink comment
remove "want symlinks" text from udev-add.c
  mention SYMLINK in man page
  man page format cleanup
  man page example for SYMLINK
2005-04-26 21:13:06 -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
greg@kroah.com f3b04a2e0a [PATCH] added ability to put format specifiers in the CALLOUT program string. 2005-04-26 21:13:02 -07:00
greg@kroah.com 10950dfe84 [PATCH] add support for string group and string user names in udev.permissions.
This only works if you are using glibc.

Patch based on patch from Marco d'Itri <md@Linux.IT>
2005-04-26 21:13:02 -07:00
greg@kroah.com 5bd1061cd6 [PATCH] fix permissions to work properly now.
Forgot about umask in mknod...
2005-04-26 21:06:25 -07:00
greg@kroah.com 30defadd3f [PATCH] get the major/minor number before we name the device.
Will come in handy later...
2005-04-26 21:06:24 -07:00
greg@kroah.com e308ebb70f [PATCH] fix udev-add.c to build properly with older versions of gcc. 2005-04-26 21:06:23 -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
kay.sievers@vrfy.org c19a6b304c [PATCH] add uid/gid to nodes
set uid/gid of node specified in udev.permissions
  only numeric id's are supported cause we can't resolve with
  klibc or libc before real /etc is mounted
2005-04-26 21:06:23 -07:00
rml@tech9.net c332cfc72d [PATCH] udev: sleep_for_dev() bits
OK, I fixed that bug you hinted at earlier in my previous
sleep_for_dev() patch.  I am sure you fixed it, but here we go
nonetheless, just in case.

I actually changed it up a bit.  It is probably faster to count down
from SECONDS_TO_WAIT_FOR_DEV than count up.

I also made the lone 'path' argument const, since it can be.

Some other misc. bits, too.
2005-04-26 21:06:22 -07:00
greg@kroah.com 1e959a4b05 [PATCH] klibc specific tweaks 2005-04-26 21:06:22 -07:00
greg@kroah.com 32ff5bca15 [PATCH] udev-add build cleanups for other libc versions. 2005-04-26 21:05:23 -07:00
greg@kroah.com 9d496c74f3 [PATCH] got rid of struct device_attr
namedev.c is still a mess, that's up next after testing...
2005-04-26 21:04:10 -07:00
rml@tech9.net 6089318cd4 [PATCH] udev: another canidate for static
Another one of those "trivial patches so everything must be good"

sleep_for_dev() isn't exported or defined in a header, so it can be
marked 'static'
2005-04-26 21:04:09 -07:00
greg@kroah.com 5b52fccb59 [PATCH] Fix bug causing udev to sleep forever waiting for dev file to show up.
Now we will timeout properly.
2005-04-26 21:04:09 -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 29fd7e679b [PATCH] don't sleep if 'dev' file is already present on device add.
instead sleep for up to 10 seconds waiting for it to show up.
2005-04-26 21:01:42 -07:00
greg@kroah.com 727d1ba5be [PATCH] fix comment about how the "dev" file is made up. 2005-04-26 21:01:42 -07:00
rml@tech9.net c2405f502c [PATCH] udev: mode should be mode_t
Unix file modes should be stored in a mode_t, not a standard type.  At
the moment it is actually unsigned, in fact, not a signed integer.

Attached patch does an s/int mode/mode_t mode/ and cleans up the
results.
2005-04-26 21:01:41 -07:00
rml@tech9.net d7e954a4ef [PATCH] udev: trivial trivialities
Yah yah, really trivial stuff...

	- get_class_device() doesn't need to be exported; it
	  should be static

	- white space cleanup
2005-04-26 21:01:41 -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
greg@kroah.com 1c596cc0a5 [PATCH] fix segfaults when dealing with partitions. 2005-04-26 21:01:41 -07:00
greg@kroah.com 8479066ec7 [PATCH] tell the user what mknod() we are trying to do. 2005-04-26 21:01:41 -07:00
greg@kroah.com a2822451e2 [PATCH] merge tdb into the build process. 2005-04-26 21:01:40 -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 63dde9f8eb [PATCH] minor cleanups. 2005-04-26 21:01:40 -07:00
greg@kroah.com 1331c889c3 [PATCH] cleanup the mknod code a bit. 2005-04-26 21:01:40 -07:00
greg@kroah.com 0abf54fc09 [PATCH] remove mknod callout
Patch from "Guo, Min" <min.guo@intel.com>
2005-04-26 21:01:40 -07:00
greg@kroah.com ea256f901e [PATCH] handle new major:minor format of dev files that showed up in 2.6.0-test2-bk3 or so. 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