if (!faccessat(dfd_base, *s, W_OK, 0) || errno == ENOENT)
continue;
- return sysinfo(false, "The %s file is not writable, skipping unified hierarchy", *s);
+ return sysinfo_ret(false, "The %s file is not writable, skipping unified hierarchy", *s);
}
*ret_files = move_ptr(list);
static bool legacy_hierarchy_delegated(int dfd_base)
{
if (faccessat(dfd_base, "cgroup.procs", W_OK, 0) && errno != ENOENT)
- return sysinfo(false, "The cgroup.procs file is not writable, skipping legacy hierarchy");
+ return sysinfo_ret(false, "The cgroup.procs file is not writable, skipping legacy hierarchy");
return true;
}
__internal_ret__; \
})
-#define sysinfo(__ret__, format, ...) \
- ({ \
- typeof(__ret__) __internal_ret__ = (__ret__); \
- SYSINFO(format, ##__VA_ARGS__); \
- __internal_ret__; \
- })
-
#define log_error(__ret__, format, ...) \
({ \
typeof(__ret__) __internal_ret__ = (__ret__); \
__internal_ret__; \
})
+#define sysinfo(format, ...) \
+ ({ \
+ SYSINFO(format, ##__VA_ARGS__); \
+ (-errno); \
+ })
+
+#define sysinfo_set(__ret__, format, ...) \
+ ({ \
+ typeof(__ret__) __internal_ret__ = (__ret__); \
+ errno = labs(__ret__); \
+ SYSINFO(format, ##__VA_ARGS__); \
+ __internal_ret__; \
+ })
+
+#define sysinfo_ret(__ret__, format, ...) \
+ ({ \
+ typeof(__ret__) __internal_ret__ = (__ret__); \
+ SYSINFO(format, ##__VA_ARGS__); \
+ __internal_ret__; \
+ })
+
#define sysdebug(format, ...) \
({ \
SYSDEBUG(format, ##__VA_ARGS__); \