summaryrefslogtreecommitdiff
path: root/udevdb.c
diff options
context:
space:
mode:
Diffstat (limited to 'udevdb.c')
-rw-r--r--udevdb.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/udevdb.c b/udevdb.c
index c4dc4f005c..a218b66179 100644
--- a/udevdb.c
+++ b/udevdb.c
@@ -42,13 +42,16 @@
#include "tdb/tdb.h"
static TDB_CONTEXT *udevdb;
-
+sig_atomic_t gotalarm;
int udevdb_add_dev(const char *path, const struct udevice *dev)
{
TDB_DATA key, data;
char keystr[SYSFS_PATH_MAX];
+ if (udevdb == NULL)
+ return -1;
+
if ((path == NULL) || (dev == NULL))
return -ENODEV;
@@ -68,6 +71,9 @@ int udevdb_get_dev(const char *path, struct udevice *dev)
{
TDB_DATA key, data;
+ if (udevdb == NULL)
+ return -1;
+
if (path == NULL)
return -ENODEV;
@@ -88,6 +94,9 @@ int udevdb_delete_dev(const char *path)
TDB_DATA key;
char keystr[SYSFS_PATH_MAX];
+ if (udevdb == NULL)
+ return -1;
+
if (path == NULL)
return -EINVAL;
@@ -121,6 +130,8 @@ int udevdb_init(int init_flag)
if (init_flag != UDEVDB_DEFAULT && init_flag != UDEVDB_INTERNAL)
return -EINVAL;
+ tdb_set_lock_alarm(&gotalarm);
+
udevdb = tdb_open(udev_db_filename, 0, init_flag, O_RDWR | O_CREAT, 0644);
if (udevdb == NULL) {
if (init_flag == UDEVDB_INTERNAL)
@@ -160,6 +171,9 @@ int udevdb_call_foreach(int (*user_record_handler) (char *path, struct udevice *
{
int retval = 0;
+ if (udevdb == NULL)
+ return -1;
+
if (user_record_handler == NULL) {
dbg("invalid user record handling function");
return -EINVAL;