summaryrefslogtreecommitdiff
path: root/udevdb.h
diff options
context:
space:
mode:
authordsteklof@us.ibm.com <dsteklof@us.ibm.com>2003-08-05 23:57:23 -0700
committerGreg KH <gregkh@suse.de>2005-04-26 21:01:40 -0700
commit8e41d35d7675b7d47db3e27da4e1fd508d772c32 (patch)
tree7b00f8bdd3ca76264f212ddd7a15f19bcedc3f41 /udevdb.h
parent5ac4a56b39fed9d95850161864befe612b1a538e (diff)
[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.
Diffstat (limited to 'udevdb.h')
-rw-r--r--udevdb.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/udevdb.h b/udevdb.h
new file mode 100644
index 0000000000..d2c4a5320e
--- /dev/null
+++ b/udevdb.h
@@ -0,0 +1,41 @@
+/*
+ * udevdb header file
+ */
+#ifndef _UDEVDB_H_
+#define _UDEVDB_H_
+
+#include "namedev.h"
+#include "udev.h"
+
+#define BUS_DB "/home/stekloff/src/udev-0.2/busdb.tdb"
+#define CLASS_DB "/home/stekloff/src/udev-0.2/classdb.tdb"
+#define NAME_DB "/home/stekloff/src/udev-0.2/namedb.tdb"
+
+#define PATH_SIZE 256
+
+#define UDEVDB_DEL "#"
+
+struct udevice {
+ char name[NAME_SIZE];
+ char sysfs_path[PATH_SIZE];
+ char class_dev_name[NAME_SIZE];
+ char class_name[NAME_SIZE];
+ char bus_id[NAME_SIZE];
+ char bus_name[NAME_SIZE];
+ char driver[NAME_SIZE];
+ char type;
+ int major;
+ int minor;
+ int mode;
+};
+
+/* Function Prototypes */
+extern int udevdb_delete_udevice(const char *name);
+extern int udevdb_add_udevice(const struct udevice *dev);
+extern struct udevice *udevdb_get_udevice(const char *name);
+extern struct udevice *udevdb_get_udevice_by_bus(const char *bus,
+ const char *id);
+extern struct udevice *udevdb_get_udevice_by_class(const char *cls,
+ const char *cls_dev);
+
+#endif /* _UDEVDB_H_ */