diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2020-12-14 18:20:18 +0900 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2020-12-16 02:28:08 +0900 |
commit | bee33d05276326f32a9e677eee6526d3935d0106 (patch) | |
tree | 424eb5226d6db1f147efe3b99d2eaf6f90caeed5 /src/shared/udev-util.c | |
parent | 0746a5ee4c5da6a8e41d0ed43f69abc228b6e6de (diff) | |
download | systemd-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.c | 20 |
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); +} |