summaryrefslogtreecommitdiff
path: root/src/shared/udev-util.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2020-10-12 18:18:33 +0200
committerLennart Poettering <lennart@poettering.net>2020-10-22 14:58:28 +0200
commit9e3d90671edbdb69393818d2b755597f84518975 (patch)
treeb8749bd73c969e0eb0fbb9b59403058c2fa80bf9 /src/shared/udev-util.c
parent021bf175289537a67345b0ca9d5d6f163a1eaf7c (diff)
downloadsystemd-9e3d90671edbdb69393818d2b755597f84518975.tar.gz
udev-util: use absolute rather than relative timeout when waiting for devices
This makes it easier to accurately wait for a overall deadline.
Diffstat (limited to 'src/shared/udev-util.c')
-rw-r--r--src/shared/udev-util.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/shared/udev-util.c b/src/shared/udev-util.c
index 98bbfb2ae3..33272de4bc 100644
--- a/src/shared/udev-util.c
+++ b/src/shared/udev-util.c
@@ -195,8 +195,9 @@ static int device_wait_for_initialization_internal(
sd_device *_device,
const char *devlink,
const char *subsystem,
- usec_t timeout,
+ usec_t deadline,
sd_device **ret) {
+
_cleanup_(sd_device_monitor_unrefp) sd_device_monitor *monitor = NULL;
_cleanup_(sd_event_source_unrefp) sd_event_source *timeout_source = NULL;
_cleanup_(sd_event_unrefp) sd_event *event = NULL;
@@ -256,10 +257,10 @@ static int device_wait_for_initialization_internal(
if (r < 0)
return log_error_errno(r, "Failed to start device monitor: %m");
- if (timeout != USEC_INFINITY) {
- r = sd_event_add_time_relative(
+ if (deadline != USEC_INFINITY) {
+ r = sd_event_add_time(
event, &timeout_source,
- CLOCK_MONOTONIC, timeout, 0,
+ CLOCK_MONOTONIC, deadline, 0,
NULL, INT_TO_PTR(-ETIMEDOUT));
if (r < 0)
return log_error_errno(r, "Failed to add timeout event source: %m");
@@ -287,12 +288,12 @@ static int device_wait_for_initialization_internal(
return 0;
}
-int device_wait_for_initialization(sd_device *device, const char *subsystem, usec_t timeout, sd_device **ret) {
- return device_wait_for_initialization_internal(device, NULL, subsystem, timeout, ret);
+int device_wait_for_initialization(sd_device *device, const char *subsystem, usec_t deadline, sd_device **ret) {
+ return device_wait_for_initialization_internal(device, NULL, subsystem, deadline, ret);
}
-int device_wait_for_devlink(const char *devlink, const char *subsystem, usec_t timeout, sd_device **ret) {
- return device_wait_for_initialization_internal(NULL, devlink, subsystem, timeout, ret);
+int device_wait_for_devlink(const char *devlink, const char *subsystem, usec_t deadline, sd_device **ret) {
+ return device_wait_for_initialization_internal(NULL, devlink, subsystem, deadline, ret);
}
int device_is_renaming(sd_device *dev) {