summaryrefslogtreecommitdiff
path: root/src/shared/udev-util.c
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2020-12-14 18:20:18 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2020-12-16 02:28:08 +0900
commitbee33d05276326f32a9e677eee6526d3935d0106 (patch)
tree424eb5226d6db1f147efe3b99d2eaf6f90caeed5 /src/shared/udev-util.c
parent0746a5ee4c5da6a8e41d0ed43f69abc228b6e6de (diff)
downloadsystemd-bee33d05276326f32a9e677eee6526d3935d0106.tar.gz
udev: introduce udev_queue_is_empty() and udev_queue_init()
Diffstat (limited to 'src/shared/udev-util.c')
-rw-r--r--src/shared/udev-util.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/shared/udev-util.c b/src/shared/udev-util.c
index 5a506887e7..df08e3a40e 100644
--- a/src/shared/udev-util.c
+++ b/src/shared/udev-util.c
@@ -2,6 +2,7 @@
#include <ctype.h>
#include <errno.h>
+#include <sys/inotify.h>
#include <unistd.h>
#include "alloc-util.h"
@@ -9,6 +10,7 @@
#include "device-util.h"
#include "env-file.h"
#include "escape.h"
+#include "fd-util.h"
#include "log.h"
#include "macro.h"
#include "parse-util.h"
@@ -536,3 +538,21 @@ int udev_resolve_subsys_kernel(const char *string, char *result, size_t maxsize,
}
return 0;
}
+
+int udev_queue_is_empty(void) {
+ return access("/run/udev/queue", F_OK) < 0 ?
+ (errno == ENOENT ? true : -errno) : false;
+}
+
+int udev_queue_init(void) {
+ _cleanup_close_ int fd = -1;
+
+ fd = inotify_init1(IN_CLOEXEC);
+ if (fd < 0)
+ return -errno;
+
+ if (inotify_add_watch(fd, "/run/udev" , IN_DELETE) < 0)
+ return -errno;
+
+ return TAKE_FD(fd);
+}