]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-device: add device_get_sysattr_u64() helper
authorLennart Poettering <lennart@poettering.net>
Thu, 28 Aug 2025 08:52:56 +0000 (10:52 +0200)
committerLennart Poettering <lennart@poettering.net>
Tue, 23 Sep 2025 07:13:13 +0000 (09:13 +0200)
src/libsystemd/sd-device/device-private.h
src/libsystemd/sd-device/sd-device.c

index d80e795154d38b546b26dee0b251f7ab29d440ac..5e75c2661914eb9a04ea67f485979d0fb7115ff3 100644 (file)
@@ -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);
index 9fef17a0dc30aafc44571e43b34bbaaca3c3b1a1..3edebdda6699e722da384f17371f4efc8c7a66fe 100644 (file)
@@ -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;