Go to file
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
docs [PATCH] updated the documentation. 2005-04-26 21:01:38 -07:00
klibc added initial files. 2005-04-26 20:59:47 -07:00
libsysfs [PATCH] udev/libsysfs cross compile fixes 2005-04-26 21:01:40 -07:00
tdb [PATCH] Added tdb code from latest cvs version in the samba tree 2005-04-26 21:01:40 -07:00
ChangeLog [PATCH] added 0.2 change log info. 2005-04-26 21:01:40 -07:00
COPYING [PATCH] added initial documentation and gpl license 2005-04-26 21:00:32 -07:00
list.h [PATCH] Initial namedev parsing of config files 2005-04-26 21:01:38 -07:00
logging.c added initial files. 2005-04-26 20:59:47 -07:00
Makefile [PATCH] udev/libsysfs cross compile fixes 2005-04-26 21:01:40 -07:00
Makefile.klibc [PATCH] added klibc makefile 2005-04-26 21:01:39 -07:00
namedev.c [PATCH] oops, everything was getting created as 000 mode, try to fix this up, 2005-04-26 21:01:40 -07:00
namedev.config [PATCH] more test stuff... 2005-04-26 21:01:40 -07:00
namedev.h [PATCH] udevdb prototype 2005-04-26 21:01:40 -07:00
namedev.permissions [PATCH] update the tests to handle block devices too. 2005-04-26 21:01:39 -07:00
README [PATCH] added 0.2 change log info. 2005-04-26 21:01:40 -07:00
test.block [PATCH] more test stuff... 2005-04-26 21:01:40 -07:00
test.tty [PATCH] split the tests up into different files. 2005-04-26 21:01:39 -07:00
TODO [PATCH] added 0.2 change log info. 2005-04-26 21:01:40 -07:00
udev-add.c [PATCH] udevdb prototype 2005-04-26 21:01:40 -07:00
udev-remove.c [PATCH] udevdb prototype 2005-04-26 21:01:40 -07:00
udev.c [PATCH] split udev main logic into udev-add and udev-remove. 2005-04-26 21:01:39 -07:00
udev.h [PATCH] cleanup the mknod code a bit. 2005-04-26 21:01:40 -07:00
udev.spec [PATCH] added my name to the .spec file. 2005-04-26 21:01:40 -07:00
udevdb.c [PATCH] udevdb prototype 2005-04-26 21:01:40 -07:00
udevdb.h [PATCH] udevdb prototype 2005-04-26 21:01:40 -07:00

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:

- Edit the udev.h file and replace the following variables with values
  that make sense for your system:
	#define UDEV_ROOT       "/udev/"
	#define MKNOD           "/bin/mknod"
  The only value most people will have to change is the UDEV_ROOT
  variable, as I doubt you really want device nodes to be created in my
  home directory :)

- Run make to build the project.

- Make sure sysfs is mounted.

- Point /proc/sys/kernel/hotplug at the location of the udev binary that
  is created.  Then plug some block devices in, or other types of
  devices that create dev files in sysfs.  An easy way to do this,
  without any hardware is to use the scsi_debug module to create virtual
  scsi devices.

- Watch as the nodes get created and removed.


Yes this is a really rough first cut, I know.  It's mostly a proof of
concept that this can actually work.  See the TODO file for a list of
things left to be done.

Any comment/questions/concerns please let me know.

greg k-h
greg@kroah.com