diff options
author | Lennart Poettering <lennart@poettering.net> | 2020-10-12 18:18:33 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2020-10-22 14:58:28 +0200 |
commit | 9e3d90671edbdb69393818d2b755597f84518975 (patch) | |
tree | b8749bd73c969e0eb0fbb9b59403058c2fa80bf9 /src/shared/udev-util.c | |
parent | 021bf175289537a67345b0ca9d5d6f163a1eaf7c (diff) | |
download | systemd-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.c | 17 |
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) { |