From: Yu Watanabe Date: Wed, 17 Jan 2024 05:09:05 +0000 (+0900) Subject: udev-util: introduce reset_cached_udev_availability() X-Git-Tag: v256-rc1~1103^2~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a3df693799499a26735acc1f0c4f1b5d1f182fa7;p=thirdparty%2Fsystemd.git udev-util: introduce reset_cached_udev_availability() --- diff --git a/src/shared/udev-util.c b/src/shared/udev-util.c index 7a86289d166..4f4b675a37b 100644 --- a/src/shared/udev-util.c +++ b/src/shared/udev-util.c @@ -14,6 +14,7 @@ #include "id128-util.h" #include "log.h" #include "macro.h" +#include "missing_threads.h" #include "parse-util.h" #include "path-util.h" #include "signal-util.h" @@ -363,18 +364,22 @@ int udev_queue_is_empty(void) { (errno == ENOENT ? true : -errno) : false; } -bool udev_available(void) { - static int cache = -1; +static int cached_udev_availability = -1; + +void reset_cached_udev_availability(void) { + cached_udev_availability = -1; +} +bool udev_available(void) { /* The service systemd-udevd is started only when /sys is read write. * See systemd-udevd.service: ConditionPathIsReadWrite=/sys * Also, our container interface (http://systemd.io/CONTAINER_INTERFACE/) states that /sys must * be mounted in read-only mode in containers. */ - if (cache >= 0) - return cache; + if (cached_udev_availability >= 0) + return cached_udev_availability; - return (cache = (path_is_read_only_fs("/sys/") <= 0)); + return (cached_udev_availability = (path_is_read_only_fs("/sys/") <= 0)); } int device_get_vendor_string(sd_device *device, const char **ret) { diff --git a/src/shared/udev-util.h b/src/shared/udev-util.h index 5f49e871161..4d27bed1d94 100644 --- a/src/shared/udev-util.h +++ b/src/shared/udev-util.h @@ -23,6 +23,7 @@ size_t udev_replace_chars(char *str, const char *allow); int udev_queue_is_empty(void); +void reset_cached_udev_availability(void); bool udev_available(void); int device_get_vendor_string(sd_device *device, const char **ret);