diff --git a/src/libsystemd/sd-device/sd-device.c b/src/libsystemd/sd-device/sd-device.c index 62531b9564..a53f31e5ff 100644 --- a/src/libsystemd/sd-device/sd-device.c +++ b/src/libsystemd/sd-device/sd-device.c @@ -1603,11 +1603,10 @@ _public_ int sd_device_get_usec_initialized(sd_device *device, uint64_t *ret) { assert_return(device, -EINVAL); - r = device_read_db(device); + r = sd_device_get_is_initialized(device); if (r < 0) return r; - - if (!device->is_initialized) + if (r == 0) return -EBUSY; if (device->usec_initialized == 0) @@ -1619,29 +1618,24 @@ _public_ int sd_device_get_usec_initialized(sd_device *device, uint64_t *ret) { return 0; } -_public_ int sd_device_get_usec_since_initialized(sd_device *device, uint64_t *usec) { - usec_t now_ts; +_public_ int sd_device_get_usec_since_initialized(sd_device *device, uint64_t *ret) { + usec_t now_ts, ts; int r; assert_return(device, -EINVAL); - r = device_read_db(device); + r = sd_device_get_usec_initialized(device, &ts); if (r < 0) return r; - if (!device->is_initialized) - return -EBUSY; - - if (device->usec_initialized == 0) - return -ENODATA; - now_ts = now(CLOCK_MONOTONIC); - if (now_ts < device->usec_initialized) + if (now_ts < ts) return -EIO; - if (usec) - *usec = now_ts - device->usec_initialized; + if (ret) + *ret = usec_sub_unsigned(now_ts, ts); + return 0; } diff --git a/src/systemd/sd-device.h b/src/systemd/sd-device.h index f8d7f225a9..19dd4d9eef 100644 --- a/src/systemd/sd-device.h +++ b/src/systemd/sd-device.h @@ -85,8 +85,8 @@ int sd_device_get_seqnum(sd_device *device, uint64_t *ret); int sd_device_get_diskseq(sd_device *device, uint64_t *ret); int sd_device_get_is_initialized(sd_device *device); -int sd_device_get_usec_initialized(sd_device *device, uint64_t *usec); -int sd_device_get_usec_since_initialized(sd_device *device, uint64_t *usec); +int sd_device_get_usec_initialized(sd_device *device, uint64_t *ret); +int sd_device_get_usec_since_initialized(sd_device *device, uint64_t *ret); const char *sd_device_get_tag_first(sd_device *device); const char *sd_device_get_tag_next(sd_device *device);