From: Lennart Poettering Date: Thu, 28 Aug 2025 08:52:56 +0000 (+0200) Subject: sd-device: add device_get_sysattr_u64() helper X-Git-Tag: v259-rc1~467^2~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cb06a804823a762aedc2b6de708aec934c497623;p=thirdparty%2Fsystemd.git sd-device: add device_get_sysattr_u64() helper --- diff --git a/src/libsystemd/sd-device/device-private.h b/src/libsystemd/sd-device/device-private.h index d80e795154d..5e75c266191 100644 --- a/src/libsystemd/sd-device/device-private.h +++ b/src/libsystemd/sd-device/device-private.h @@ -21,6 +21,7 @@ static inline int device_get_sysattr_unsigned(sd_device *device, const char *sys return device_get_sysattr_unsigned_full(device, sysattr, 0, ret_value); } int device_get_sysattr_u32(sd_device *device, const char *sysattr, uint32_t *ret_value); +int device_get_sysattr_u64(sd_device *device, const char *sysattr, uint64_t *ret_value); int device_get_sysattr_bool(sd_device *device, const char *sysattr); int device_get_devlink_priority(sd_device *device, int *ret); int device_get_devnode_mode(sd_device *device, mode_t *ret); diff --git a/src/libsystemd/sd-device/sd-device.c b/src/libsystemd/sd-device/sd-device.c index 9fef17a0dc3..3edebdda669 100644 --- a/src/libsystemd/sd-device/sd-device.c +++ b/src/libsystemd/sd-device/sd-device.c @@ -2652,6 +2652,25 @@ int device_get_sysattr_u32(sd_device *device, const char *sysattr, uint32_t *ret return v > 0; } +int device_get_sysattr_u64(sd_device *device, const char *sysattr, uint64_t *ret_value) { + const char *value; + int r; + + r = sd_device_get_sysattr_value(device, sysattr, &value); + if (r < 0) + return r; + + uint64_t v; + r = safe_atou64(value, &v); + if (r < 0) + return log_device_debug_errno(device, r, "Failed to parse '%s' attribute: %m", sysattr); + + if (ret_value) + *ret_value = v; + /* We return "true" if the value is positive. */ + return v > 0; +} + int device_get_sysattr_bool(sd_device *device, const char *sysattr) { const char *value; int r;