From 40d60725ec0b479c4d4e8cadcfe26578db75bc64 Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Sat, 12 Apr 2025 11:16:49 +0200 Subject: [PATCH 01/15] basic: Move ratelimit logging functions to ratelimit.h The ratelimit logging functions are only useful in a few scenarios so let's move them to ratelimit.h instead of keeping them in the generic log.h --- src/basic/lock-util.h | 2 + src/basic/log.h | 53 ---------------------- src/basic/ratelimit.h | 52 +++++++++++++++++++++ src/core/clock-warp.c | 1 + src/core/execute.h | 1 + src/libsystemd/sd-journal/journal-file.c | 1 + src/libsystemd/sd-journal/journal-vacuum.c | 1 + src/libsystemd/sd-json/sd-json.c | 1 + src/shared/watchdog.c | 1 + src/udev/scsi_id/scsi_serial.c | 1 + 10 files changed, 61 insertions(+), 53 deletions(-) diff --git a/src/basic/lock-util.h b/src/basic/lock-util.h index a67d8b2c93..b327b8e561 100644 --- a/src/basic/lock-util.h +++ b/src/basic/lock-util.h @@ -5,6 +5,8 @@ /* Include here so consumers have LOCK_{EX,SH,NB} available. */ #include +#include "time-util.h" + typedef struct LockFile { int dir_fd; char *path; diff --git a/src/basic/log.h b/src/basic/log.h index def54c81b1..3687c8e69b 100644 --- a/src/basic/log.h +++ b/src/basic/log.h @@ -9,7 +9,6 @@ #include "list.h" #include "macro.h" -#include "ratelimit.h" #include "stdio-util.h" /* Some structures we reference but don't want to pull in headers for */ @@ -403,58 +402,6 @@ int log_syntax_parse_error_internal( void log_setup(void); -typedef struct LogRateLimit { - int error; - int level; - RateLimit ratelimit; -} LogRateLimit; - -#define log_ratelimit_internal(_level, _error, _ratelimit, _file, _line, _func, _format, ...) \ -({ \ - int _log_ratelimit_error = (_error); \ - int _log_ratelimit_level = (_level); \ - static LogRateLimit _log_ratelimit = { \ - .ratelimit = (_ratelimit), \ - }; \ - unsigned _num_dropped_errors = ratelimit_num_dropped(&_log_ratelimit.ratelimit); \ - if (_log_ratelimit_error != _log_ratelimit.error || _log_ratelimit_level != _log_ratelimit.level) { \ - ratelimit_reset(&_log_ratelimit.ratelimit); \ - _log_ratelimit.error = _log_ratelimit_error; \ - _log_ratelimit.level = _log_ratelimit_level; \ - } \ - if (log_get_max_level() == LOG_DEBUG || ratelimit_below(&_log_ratelimit.ratelimit)) \ - _log_ratelimit_error = _num_dropped_errors > 0 \ - ? log_internal(_log_ratelimit_level, _log_ratelimit_error, _file, _line, _func, _format " (Dropped %u similar message(s))", ##__VA_ARGS__, _num_dropped_errors) \ - : log_internal(_log_ratelimit_level, _log_ratelimit_error, _file, _line, _func, _format, ##__VA_ARGS__); \ - _log_ratelimit_error; \ -}) - -#define log_ratelimit_full_errno(level, error, _ratelimit, format, ...) \ - ({ \ - int _level = (level), _e = (error); \ - _e = (log_get_max_level() >= LOG_PRI(_level)) \ - ? log_ratelimit_internal(_level, _e, _ratelimit, PROJECT_FILE, __LINE__, __func__, format, ##__VA_ARGS__) \ - : -ERRNO_VALUE(_e); \ - _e < 0 ? _e : -ESTRPIPE; \ - }) - -#define log_ratelimit_full(level, _ratelimit, format, ...) \ - log_ratelimit_full_errno(level, 0, _ratelimit, format, ##__VA_ARGS__) - -/* Normal logging */ -#define log_ratelimit_info(...) log_ratelimit_full(LOG_INFO, __VA_ARGS__) -#define log_ratelimit_notice(...) log_ratelimit_full(LOG_NOTICE, __VA_ARGS__) -#define log_ratelimit_warning(...) log_ratelimit_full(LOG_WARNING, __VA_ARGS__) -#define log_ratelimit_error(...) log_ratelimit_full(LOG_ERR, __VA_ARGS__) -#define log_ratelimit_emergency(...) log_ratelimit_full(log_emergency_level(), __VA_ARGS__) - -/* Logging triggered by an errno-like error */ -#define log_ratelimit_info_errno(error, ...) log_ratelimit_full_errno(LOG_INFO, error, __VA_ARGS__) -#define log_ratelimit_notice_errno(error, ...) log_ratelimit_full_errno(LOG_NOTICE, error, __VA_ARGS__) -#define log_ratelimit_warning_errno(error, ...) log_ratelimit_full_errno(LOG_WARNING, error, __VA_ARGS__) -#define log_ratelimit_error_errno(error, ...) log_ratelimit_full_errno(LOG_ERR, error, __VA_ARGS__) -#define log_ratelimit_emergency_errno(error, ...) log_ratelimit_full_errno(log_emergency_level(), error, __VA_ARGS__) - const char* _log_set_prefix(const char *prefix, bool force); static inline const char* _log_unset_prefixp(const char **p) { assert(p); diff --git a/src/basic/ratelimit.h b/src/basic/ratelimit.h index 7801ef4270..fd83426375 100644 --- a/src/basic/ratelimit.h +++ b/src/basic/ratelimit.h @@ -28,3 +28,55 @@ unsigned ratelimit_num_dropped(const RateLimit *rl); usec_t ratelimit_end(const RateLimit *rl); usec_t ratelimit_left(const RateLimit *rl); + +typedef struct LogRateLimit { + int error; + int level; + RateLimit ratelimit; +} LogRateLimit; + +#define log_ratelimit_internal(_level, _error, _ratelimit, _file, _line, _func, _format, ...) \ +({ \ + int _log_ratelimit_error = (_error); \ + int _log_ratelimit_level = (_level); \ + static LogRateLimit _log_ratelimit = { \ + .ratelimit = (_ratelimit), \ + }; \ + unsigned _num_dropped_errors = ratelimit_num_dropped(&_log_ratelimit.ratelimit); \ + if (_log_ratelimit_error != _log_ratelimit.error || _log_ratelimit_level != _log_ratelimit.level) { \ + ratelimit_reset(&_log_ratelimit.ratelimit); \ + _log_ratelimit.error = _log_ratelimit_error; \ + _log_ratelimit.level = _log_ratelimit_level; \ + } \ + if (log_get_max_level() == LOG_DEBUG || ratelimit_below(&_log_ratelimit.ratelimit)) \ + _log_ratelimit_error = _num_dropped_errors > 0 \ + ? log_internal(_log_ratelimit_level, _log_ratelimit_error, _file, _line, _func, _format " (Dropped %u similar message(s))", ##__VA_ARGS__, _num_dropped_errors) \ + : log_internal(_log_ratelimit_level, _log_ratelimit_error, _file, _line, _func, _format, ##__VA_ARGS__); \ + _log_ratelimit_error; \ +}) + +#define log_ratelimit_full_errno(level, error, _ratelimit, format, ...) \ + ({ \ + int _level = (level), _e = (error); \ + _e = (log_get_max_level() >= LOG_PRI(_level)) \ + ? log_ratelimit_internal(_level, _e, _ratelimit, PROJECT_FILE, __LINE__, __func__, format, ##__VA_ARGS__) \ + : -ERRNO_VALUE(_e); \ + _e < 0 ? _e : -ESTRPIPE; \ + }) + +#define log_ratelimit_full(level, _ratelimit, format, ...) \ + log_ratelimit_full_errno(level, 0, _ratelimit, format, ##__VA_ARGS__) + +/* Normal logging */ +#define log_ratelimit_info(...) log_ratelimit_full(LOG_INFO, __VA_ARGS__) +#define log_ratelimit_notice(...) log_ratelimit_full(LOG_NOTICE, __VA_ARGS__) +#define log_ratelimit_warning(...) log_ratelimit_full(LOG_WARNING, __VA_ARGS__) +#define log_ratelimit_error(...) log_ratelimit_full(LOG_ERR, __VA_ARGS__) +#define log_ratelimit_emergency(...) log_ratelimit_full(log_emergency_level(), __VA_ARGS__) + +/* Logging triggered by an errno-like error */ +#define log_ratelimit_info_errno(error, ...) log_ratelimit_full_errno(LOG_INFO, error, __VA_ARGS__) +#define log_ratelimit_notice_errno(error, ...) log_ratelimit_full_errno(LOG_NOTICE, error, __VA_ARGS__) +#define log_ratelimit_warning_errno(error, ...) log_ratelimit_full_errno(LOG_WARNING, error, __VA_ARGS__) +#define log_ratelimit_error_errno(error, ...) log_ratelimit_full_errno(LOG_ERR, error, __VA_ARGS__) +#define log_ratelimit_emergency_errno(error, ...) log_ratelimit_full_errno(log_emergency_level(), error, __VA_ARGS__) diff --git a/src/core/clock-warp.c b/src/core/clock-warp.c index 3620c6942e..e9a832a8e7 100644 --- a/src/core/clock-warp.c +++ b/src/core/clock-warp.c @@ -8,6 +8,7 @@ #include "clock-util.h" #include "clock-warp.h" #include "errno-util.h" +#include "time-util.h" int clock_reset_timewarp(void) { static const struct timezone tz = { diff --git a/src/core/execute.h b/src/core/execute.h index 78f04d5173..63d5b448de 100644 --- a/src/core/execute.h +++ b/src/core/execute.h @@ -28,6 +28,7 @@ typedef struct Manager Manager; #include "open-file.h" #include "ordered-set.h" #include "path-util.h" +#include "ratelimit.h" #include "rlimit-util.h" #include "runtime-scope.h" #include "set.h" diff --git a/src/libsystemd/sd-journal/journal-file.c b/src/libsystemd/sd-journal/journal-file.c index a0e618cf1d..2f3e48c674 100644 --- a/src/libsystemd/sd-journal/journal-file.c +++ b/src/libsystemd/sd-journal/journal-file.c @@ -32,6 +32,7 @@ #include "path-util.h" #include "prioq.h" #include "random-util.h" +#include "ratelimit.h" #include "set.h" #include "sort-util.h" #include "stat-util.h" diff --git a/src/libsystemd/sd-journal/journal-vacuum.c b/src/libsystemd/sd-journal/journal-vacuum.c index f7dee86209..7537f5be49 100644 --- a/src/libsystemd/sd-journal/journal-vacuum.c +++ b/src/libsystemd/sd-journal/journal-vacuum.c @@ -15,6 +15,7 @@ #include "journal-file.h" #include "journal-internal.h" #include "journal-vacuum.h" +#include "ratelimit.h" #include "sort-util.h" #include "string-util.h" #include "time-util.h" diff --git a/src/libsystemd/sd-json/sd-json.c b/src/libsystemd/sd-json/sd-json.c index 618ce93978..f330045f5d 100644 --- a/src/libsystemd/sd-json/sd-json.c +++ b/src/libsystemd/sd-json/sd-json.c @@ -31,6 +31,7 @@ #include "memstream-util.h" #include "path-util.h" #include "process-util.h" +#include "ratelimit.h" #include "set.h" #include "signal-util.h" #include "string-table.h" diff --git a/src/shared/watchdog.c b/src/shared/watchdog.c index 0da142b51a..a6077d6654 100644 --- a/src/shared/watchdog.c +++ b/src/shared/watchdog.c @@ -15,6 +15,7 @@ #include "fileio.h" #include "log.h" #include "path-util.h" +#include "ratelimit.h" #include "string-util.h" #include "time-util.h" #include "watchdog.h" diff --git a/src/udev/scsi_id/scsi_serial.c b/src/udev/scsi_id/scsi_serial.c index d8655c08c3..e83523fe25 100644 --- a/src/udev/scsi_id/scsi_serial.c +++ b/src/udev/scsi_id/scsi_serial.c @@ -26,6 +26,7 @@ #include "scsi.h" #include "scsi_id.h" #include "string-util.h" +#include "time-util.h" /* * A priority based list of id, naa, and binary/ascii for the identifier From a4bff6ef8e046d940ee6eb241762b62b25155743 Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Fri, 18 Apr 2025 10:47:23 +0200 Subject: [PATCH 02/15] basic: Move log context functions to log-context.h --- src/basic/log-context.c | 180 +++++++++++++++++++++ src/basic/log-context.h | 127 +++++++++++++++ src/basic/log.c | 184 +--------------------- src/basic/log.h | 109 ------------- src/basic/meson.build | 1 + src/core/unit.h | 1 + src/libsystemd/sd-bus/sd-bus.c | 1 + src/libsystemd/sd-device/device-monitor.c | 1 + src/portable/portable.c | 1 + src/test/test-log.c | 1 + 10 files changed, 318 insertions(+), 288 deletions(-) create mode 100644 src/basic/log-context.c create mode 100644 src/basic/log-context.h diff --git a/src/basic/log-context.c b/src/basic/log-context.c new file mode 100644 index 0000000000..4ad0864ef7 --- /dev/null +++ b/src/basic/log-context.c @@ -0,0 +1,180 @@ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ + +#include + +#include "env-util.h" +#include "iovec-util.h" +#include "log.h" +#include "log-context.h" +#include "strv.h" + +static int saved_log_context_enabled = -1; +thread_local LIST_HEAD(LogContext, _log_context) = NULL; +thread_local size_t _log_context_num_fields = 0; + +bool log_context_enabled(void) { + int r; + + if (log_get_max_level() == LOG_DEBUG) + return true; + + if (saved_log_context_enabled >= 0) + return saved_log_context_enabled; + + r = secure_getenv_bool("SYSTEMD_ENABLE_LOG_CONTEXT"); + if (r < 0 && r != -ENXIO) + log_debug_errno(r, "Failed to parse $SYSTEMD_ENABLE_LOG_CONTEXT, ignoring: %m"); + + saved_log_context_enabled = r > 0; + + return saved_log_context_enabled; +} + +static LogContext* log_context_attach(LogContext *c) { + assert(c); + + _log_context_num_fields += strv_length(c->fields); + _log_context_num_fields += c->n_input_iovec; + _log_context_num_fields += !!c->key; + + return LIST_PREPEND(ll, _log_context, c); +} + +static LogContext* log_context_detach(LogContext *c) { + if (!c) + return NULL; + + assert(_log_context_num_fields >= strv_length(c->fields) + c->n_input_iovec +!!c->key); + _log_context_num_fields -= strv_length(c->fields); + _log_context_num_fields -= c->n_input_iovec; + _log_context_num_fields -= !!c->key; + + LIST_REMOVE(ll, _log_context, c); + return NULL; +} + +LogContext* log_context_new(const char *key, const char *value) { + assert(key); + assert(endswith(key, "=")); + assert(value); + + LIST_FOREACH(ll, i, _log_context) + if (i->key == key && i->value == value) + return log_context_ref(i); + + LogContext *c = new(LogContext, 1); + if (!c) + return NULL; + + *c = (LogContext) { + .n_ref = 1, + .key = (char *) key, + .value = (char *) value, + }; + + return log_context_attach(c); +} + +LogContext* log_context_new_strv(char **fields, bool owned) { + if (!fields) + return NULL; + + LIST_FOREACH(ll, i, _log_context) + if (i->fields == fields) { + assert(!owned); + return log_context_ref(i); + } + + LogContext *c = new(LogContext, 1); + if (!c) + return NULL; + + *c = (LogContext) { + .n_ref = 1, + .fields = fields, + .owned = owned, + }; + + return log_context_attach(c); +} + +LogContext* log_context_new_iov(struct iovec *input_iovec, size_t n_input_iovec, bool owned) { + if (!input_iovec || n_input_iovec == 0) + return NULL; + + LIST_FOREACH(ll, i, _log_context) + if (i->input_iovec == input_iovec && i->n_input_iovec == n_input_iovec) { + assert(!owned); + return log_context_ref(i); + } + + LogContext *c = new(LogContext, 1); + if (!c) + return NULL; + + *c = (LogContext) { + .n_ref = 1, + .input_iovec = input_iovec, + .n_input_iovec = n_input_iovec, + .owned = owned, + }; + + return log_context_attach(c); +} + +static LogContext* log_context_free(LogContext *c) { + if (!c) + return NULL; + + log_context_detach(c); + + if (c->owned) { + strv_free(c->fields); + iovec_array_free(c->input_iovec, c->n_input_iovec); + free(c->key); + free(c->value); + } + + return mfree(c); +} + +DEFINE_TRIVIAL_REF_UNREF_FUNC(LogContext, log_context, log_context_free); + +LogContext* log_context_new_strv_consume(char **fields) { + LogContext *c = log_context_new_strv(fields, /*owned=*/ true); + if (!c) + strv_free(fields); + + return c; +} + +LogContext* log_context_new_iov_consume(struct iovec *input_iovec, size_t n_input_iovec) { + LogContext *c = log_context_new_iov(input_iovec, n_input_iovec, /*owned=*/ true); + if (!c) + iovec_array_free(input_iovec, n_input_iovec); + + return c; +} + +LogContext* log_context_head(void) { + return _log_context; +} + +size_t log_context_num_contexts(void) { + size_t n = 0; + + LIST_FOREACH(ll, c, _log_context) + n++; + + return n; +} + +size_t log_context_num_fields(void) { + return _log_context_num_fields; +} + +void _reset_log_level(int *saved_log_level) { + assert(saved_log_level); + + log_set_max_level(*saved_log_level); +} diff --git a/src/basic/log-context.h b/src/basic/log-context.h new file mode 100644 index 0000000000..7cff79cc31 --- /dev/null +++ b/src/basic/log-context.h @@ -0,0 +1,127 @@ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ +#pragma once + +#include +#include + +#include "macro.h" + +/* + * The log context allows attaching extra metadata to log messages written to the journal via log.h. We keep + * track of a thread local log context onto which we can push extra metadata fields that should be logged. + * + * LOG_CONTEXT_PUSH() will add the provided field to the log context and will remove it again when the + * current block ends. LOG_CONTEXT_PUSH_STRV() will do the same but for all fields in the given strv. + * LOG_CONTEXT_PUSHF() is like LOG_CONTEXT_PUSH() but takes a format string and arguments. + * + * Using the macros is as simple as putting them anywhere inside a block to add a field to all following log + * messages logged from inside that block. + * + * void myfunction(...) { + * ... + * + * LOG_CONTEXT_PUSHF("MYMETADATA=%s", "abc"); + * + * // Every journal message logged will now have the MYMETADATA=abc + * // field included. + * } + * + * One special case to note is async code, where we use callbacks that are invoked to continue processing + * when some event occurs. For async code, there's usually an associated "userdata" struct containing all the + * information associated with the async operation. In this "userdata" struct, we can store a log context + * allocated with log_context_new() and freed with log_context_free(). We can then add and remove fields to + * the `fields` member of the log context object and all those fields will be logged along with each log + * message. + */ + +struct iovec; + +typedef struct LogContext { + unsigned n_ref; + /* Depending on which destructor is used (log_context_free() or log_context_detach()) the memory + * referenced by this is freed or not */ + char **fields; + struct iovec *input_iovec; + size_t n_input_iovec; + char *key; + char *value; + bool owned; + LIST_FIELDS(struct LogContext, ll); +} LogContext; + +bool log_context_enabled(void); + +LogContext* log_context_new(const char *key, const char *value); +LogContext* log_context_new_strv(char **fields, bool owned); +LogContext* log_context_new_iov(struct iovec *input_iovec, size_t n_input_iovec, bool owned); + +/* Same as log_context_new(), but frees the given fields strv/iovec on failure. */ +LogContext* log_context_new_strv_consume(char **fields); +LogContext* log_context_new_iov_consume(struct iovec *input_iovec, size_t n_input_iovec); + +LogContext *log_context_ref(LogContext *c); +LogContext *log_context_unref(LogContext *c); + +DEFINE_TRIVIAL_CLEANUP_FUNC(LogContext*, log_context_unref); + +/* Returns the head of the log context list. */ +LogContext* log_context_head(void); +/* Returns the number of attached log context objects. */ +size_t log_context_num_contexts(void); +/* Returns the number of fields in all attached log contexts. */ +size_t log_context_num_fields(void); + +void _reset_log_level(int *saved_log_level); + +#define LOG_CONTEXT_SET_LOG_LEVEL(level) \ + _cleanup_(_reset_log_level) _unused_ int _saved_log_level_ = log_set_max_level(level); + +#define LOG_CONTEXT_PUSH(...) \ + LOG_CONTEXT_PUSH_STRV(STRV_MAKE(__VA_ARGS__)) + +#define LOG_CONTEXT_PUSHF(...) \ + LOG_CONTEXT_PUSH(snprintf_ok((char[LINE_MAX]) {}, LINE_MAX, __VA_ARGS__)) + +#define _LOG_CONTEXT_PUSH_KEY_VALUE(key, value, c) \ + _unused_ _cleanup_(log_context_unrefp) LogContext *c = log_context_new(key, value); + +#define LOG_CONTEXT_PUSH_KEY_VALUE(key, value) \ + _LOG_CONTEXT_PUSH_KEY_VALUE(key, value, UNIQ_T(c, UNIQ)) + +#define _LOG_CONTEXT_PUSH_STRV(strv, c) \ + _unused_ _cleanup_(log_context_unrefp) LogContext *c = log_context_new_strv(strv, /*owned=*/ false); + +#define LOG_CONTEXT_PUSH_STRV(strv) \ + _LOG_CONTEXT_PUSH_STRV(strv, UNIQ_T(c, UNIQ)) + +#define _LOG_CONTEXT_PUSH_IOV(input_iovec, n_input_iovec, c) \ + _unused_ _cleanup_(log_context_unrefp) LogContext *c = log_context_new_iov(input_iovec, n_input_iovec, /*owned=*/ false); + +#define LOG_CONTEXT_PUSH_IOV(input_iovec, n_input_iovec) \ + _LOG_CONTEXT_PUSH_IOV(input_iovec, n_input_iovec, UNIQ_T(c, UNIQ)) + +/* LOG_CONTEXT_CONSUME_STR()/LOG_CONTEXT_CONSUME_STRV()/LOG_CONTEXT_CONSUME_IOV() are identical to +* LOG_CONTEXT_PUSH_STR()/LOG_CONTEXT_PUSH_STRV()/LOG_CONTEXT_PUSH_IOV() except they take ownership of the +* given str/strv argument. +*/ + +#define _LOG_CONTEXT_CONSUME_STR(s, c, strv) \ + _unused_ _cleanup_strv_free_ strv = strv_new(s); \ + if (!strv) \ + free(s); \ + _unused_ _cleanup_(log_context_unrefp) LogContext *c = log_context_new_strv_consume(TAKE_PTR(strv)) + +#define LOG_CONTEXT_CONSUME_STR(s) \ + _LOG_CONTEXT_CONSUME_STR(s, UNIQ_T(c, UNIQ), UNIQ_T(sv, UNIQ)) + +#define _LOG_CONTEXT_CONSUME_STRV(strv, c) \ + _unused_ _cleanup_(log_context_unrefp) LogContext *c = log_context_new_strv_consume(strv); + +#define LOG_CONTEXT_CONSUME_STRV(strv) \ + _LOG_CONTEXT_CONSUME_STRV(strv, UNIQ_T(c, UNIQ)) + +#define _LOG_CONTEXT_CONSUME_IOV(input_iovec, n_input_iovec, c) \ + _unused_ _cleanup_(log_context_unrefp) LogContext *c = log_context_new_iov_consume(input_iovec, n_input_iovec); + +#define LOG_CONTEXT_CONSUME_IOV(input_iovec, n_input_iovec) \ + _LOG_CONTEXT_CONSUME_IOV(input_iovec, n_input_iovec, UNIQ_T(c, UNIQ)) diff --git a/src/basic/log.c b/src/basic/log.c index f734a7811a..c244666f1f 100644 --- a/src/basic/log.c +++ b/src/basic/log.c @@ -25,6 +25,7 @@ #include "format-util.h" #include "iovec-util.h" #include "log.h" +#include "log-context.h" #include "macro.h" #include "missing_syscall.h" #include "parse-util.h" @@ -82,22 +83,6 @@ static bool assert_return_is_critical = BUILD_MODE_DEVELOPER; * use here. */ static char *log_abort_msg = NULL; -typedef struct LogContext { - unsigned n_ref; - /* Depending on which destructor is used (log_context_free() or log_context_detach()) the memory - * referenced by this is freed or not */ - char **fields; - struct iovec *input_iovec; - size_t n_input_iovec; - char *key; - char *value; - bool owned; - LIST_FIELDS(struct LogContext, ll); -} LogContext; - -static thread_local LIST_HEAD(LogContext, _log_context) = NULL; -static thread_local size_t _log_context_num_fields = 0; - static thread_local const char *log_prefix = NULL; #if LOG_MESSAGE_VERIFICATION || defined(__COVERITY__) @@ -697,7 +682,7 @@ static void log_do_context(struct iovec *iovec, size_t iovec_len, size_t *n) { assert(iovec); assert(n); - LIST_FOREACH(ll, c, _log_context) { + LIST_FOREACH(ll, c, log_context_head()) { STRV_FOREACH(s, c->fields) { if (*n + 2 >= iovec_len) return; @@ -747,7 +732,7 @@ static int write_to_journal( if (LOG_PRI(level) > log_target_max_level[LOG_TARGET_JOURNAL]) return 0; - iovec_len = MIN(6 + _log_context_num_fields * 3, IOVEC_MAX); + iovec_len = MIN(6 + log_context_num_fields() * 3, IOVEC_MAX); iovec = newa(struct iovec, iovec_len); log_do_header(header, sizeof(header), level, error, file, line, func, object_field, object, extra_field, extra); @@ -1099,7 +1084,7 @@ int log_struct_internal( int r; bool fallback = false; - iovec_len = MIN(17 + _log_context_num_fields * 3, IOVEC_MAX); + iovec_len = MIN(17 + log_context_num_fields() * 3, IOVEC_MAX); iovec = newa(struct iovec, iovec_len); /* If the journal is available do structured logging. @@ -1200,7 +1185,7 @@ int log_struct_iovec_internal( struct iovec *iovec; size_t n = 0, iovec_len; - iovec_len = MIN(1 + n_input_iovec * 2 + _log_context_num_fields * 3, IOVEC_MAX); + iovec_len = MIN(1 + n_input_iovec * 2 + log_context_num_fields() * 3, IOVEC_MAX); iovec = newa(struct iovec, iovec_len); log_do_header(header, sizeof(header), level, error, file, line, func, NULL, NULL, NULL, NULL); @@ -1811,162 +1796,3 @@ const char* _log_set_prefix(const char *prefix, bool force) { return old; } - -static int saved_log_context_enabled = -1; - -bool log_context_enabled(void) { - int r; - - if (log_get_max_level() == LOG_DEBUG) - return true; - - if (saved_log_context_enabled >= 0) - return saved_log_context_enabled; - - r = secure_getenv_bool("SYSTEMD_ENABLE_LOG_CONTEXT"); - if (r < 0 && r != -ENXIO) - log_debug_errno(r, "Failed to parse $SYSTEMD_ENABLE_LOG_CONTEXT, ignoring: %m"); - - saved_log_context_enabled = r > 0; - - return saved_log_context_enabled; -} - -static LogContext* log_context_attach(LogContext *c) { - assert(c); - - _log_context_num_fields += strv_length(c->fields); - _log_context_num_fields += c->n_input_iovec; - _log_context_num_fields += !!c->key; - - return LIST_PREPEND(ll, _log_context, c); -} - -static LogContext* log_context_detach(LogContext *c) { - if (!c) - return NULL; - - assert(_log_context_num_fields >= strv_length(c->fields) + c->n_input_iovec +!!c->key); - _log_context_num_fields -= strv_length(c->fields); - _log_context_num_fields -= c->n_input_iovec; - _log_context_num_fields -= !!c->key; - - LIST_REMOVE(ll, _log_context, c); - return NULL; -} - -LogContext* log_context_new(const char *key, const char *value) { - assert(key); - assert(endswith(key, "=")); - assert(value); - - LIST_FOREACH(ll, i, _log_context) - if (i->key == key && i->value == value) - return log_context_ref(i); - - LogContext *c = new(LogContext, 1); - if (!c) - return NULL; - - *c = (LogContext) { - .n_ref = 1, - .key = (char *) key, - .value = (char *) value, - }; - - return log_context_attach(c); -} - -LogContext* log_context_new_strv(char **fields, bool owned) { - if (!fields) - return NULL; - - LIST_FOREACH(ll, i, _log_context) - if (i->fields == fields) { - assert(!owned); - return log_context_ref(i); - } - - LogContext *c = new(LogContext, 1); - if (!c) - return NULL; - - *c = (LogContext) { - .n_ref = 1, - .fields = fields, - .owned = owned, - }; - - return log_context_attach(c); -} - -LogContext* log_context_new_iov(struct iovec *input_iovec, size_t n_input_iovec, bool owned) { - if (!input_iovec || n_input_iovec == 0) - return NULL; - - LIST_FOREACH(ll, i, _log_context) - if (i->input_iovec == input_iovec && i->n_input_iovec == n_input_iovec) { - assert(!owned); - return log_context_ref(i); - } - - LogContext *c = new(LogContext, 1); - if (!c) - return NULL; - - *c = (LogContext) { - .n_ref = 1, - .input_iovec = input_iovec, - .n_input_iovec = n_input_iovec, - .owned = owned, - }; - - return log_context_attach(c); -} - -static LogContext* log_context_free(LogContext *c) { - if (!c) - return NULL; - - log_context_detach(c); - - if (c->owned) { - strv_free(c->fields); - iovec_array_free(c->input_iovec, c->n_input_iovec); - free(c->key); - free(c->value); - } - - return mfree(c); -} - -DEFINE_TRIVIAL_REF_UNREF_FUNC(LogContext, log_context, log_context_free); - -LogContext* log_context_new_strv_consume(char **fields) { - LogContext *c = log_context_new_strv(fields, /*owned=*/ true); - if (!c) - strv_free(fields); - - return c; -} - -LogContext* log_context_new_iov_consume(struct iovec *input_iovec, size_t n_input_iovec) { - LogContext *c = log_context_new_iov(input_iovec, n_input_iovec, /*owned=*/ true); - if (!c) - iovec_array_free(input_iovec, n_input_iovec); - - return c; -} - -size_t log_context_num_contexts(void) { - size_t n = 0; - - LIST_FOREACH(ll, c, _log_context) - n++; - - return n; -} - -size_t log_context_num_fields(void) { - return _log_context_num_fields; -} diff --git a/src/basic/log.h b/src/basic/log.h index 3687c8e69b..e6b6a4b4fe 100644 --- a/src/basic/log.h +++ b/src/basic/log.h @@ -411,112 +411,3 @@ static inline const char* _log_unset_prefixp(const char **p) { #define LOG_SET_PREFIX(prefix) \ _cleanup_(_log_unset_prefixp) _unused_ const char *CONCATENATE(_cleanup_log_unset_prefix_, UNIQ) = _log_set_prefix(prefix, false); - -/* - * The log context allows attaching extra metadata to log messages written to the journal via log.h. We keep - * track of a thread local log context onto which we can push extra metadata fields that should be logged. - * - * LOG_CONTEXT_PUSH() will add the provided field to the log context and will remove it again when the - * current block ends. LOG_CONTEXT_PUSH_STRV() will do the same but for all fields in the given strv. - * LOG_CONTEXT_PUSHF() is like LOG_CONTEXT_PUSH() but takes a format string and arguments. - * - * Using the macros is as simple as putting them anywhere inside a block to add a field to all following log - * messages logged from inside that block. - * - * void myfunction(...) { - * ... - * - * LOG_CONTEXT_PUSHF("MYMETADATA=%s", "abc"); - * - * // Every journal message logged will now have the MYMETADATA=abc - * // field included. - * } - * - * One special case to note is async code, where we use callbacks that are invoked to continue processing - * when some event occurs. For async code, there's usually an associated "userdata" struct containing all the - * information associated with the async operation. In this "userdata" struct, we can store a log context - * allocated with log_context_new() and freed with log_context_free(). We can then add and remove fields to - * the `fields` member of the log context object and all those fields will be logged along with each log - * message. - */ - -typedef struct LogContext LogContext; - -bool log_context_enabled(void); - -LogContext* log_context_new(const char *key, const char *value); -LogContext* log_context_new_strv(char **fields, bool owned); -LogContext* log_context_new_iov(struct iovec *input_iovec, size_t n_input_iovec, bool owned); - -/* Same as log_context_new(), but frees the given fields strv/iovec on failure. */ -LogContext* log_context_new_strv_consume(char **fields); -LogContext* log_context_new_iov_consume(struct iovec *input_iovec, size_t n_input_iovec); - -LogContext *log_context_ref(LogContext *c); -LogContext *log_context_unref(LogContext *c); - -DEFINE_TRIVIAL_CLEANUP_FUNC(LogContext*, log_context_unref); - -/* Returns the number of attached log context objects. */ -size_t log_context_num_contexts(void); -/* Returns the number of fields in all attached log contexts. */ -size_t log_context_num_fields(void); - -static inline void _reset_log_level(int *saved_log_level) { - assert(saved_log_level); - - log_set_max_level(*saved_log_level); -} - -#define LOG_CONTEXT_SET_LOG_LEVEL(level) \ - _cleanup_(_reset_log_level) _unused_ int _saved_log_level_ = log_set_max_level(level); - -#define LOG_CONTEXT_PUSH(...) \ - LOG_CONTEXT_PUSH_STRV(STRV_MAKE(__VA_ARGS__)) - -#define LOG_CONTEXT_PUSHF(...) \ - LOG_CONTEXT_PUSH(snprintf_ok((char[LINE_MAX]) {}, LINE_MAX, __VA_ARGS__)) - -#define _LOG_CONTEXT_PUSH_KEY_VALUE(key, value, c) \ - _unused_ _cleanup_(log_context_unrefp) LogContext *c = log_context_new(key, value); - -#define LOG_CONTEXT_PUSH_KEY_VALUE(key, value) \ - _LOG_CONTEXT_PUSH_KEY_VALUE(key, value, UNIQ_T(c, UNIQ)) - -#define _LOG_CONTEXT_PUSH_STRV(strv, c) \ - _unused_ _cleanup_(log_context_unrefp) LogContext *c = log_context_new_strv(strv, /*owned=*/ false); - -#define LOG_CONTEXT_PUSH_STRV(strv) \ - _LOG_CONTEXT_PUSH_STRV(strv, UNIQ_T(c, UNIQ)) - -#define _LOG_CONTEXT_PUSH_IOV(input_iovec, n_input_iovec, c) \ - _unused_ _cleanup_(log_context_unrefp) LogContext *c = log_context_new_iov(input_iovec, n_input_iovec, /*owned=*/ false); - -#define LOG_CONTEXT_PUSH_IOV(input_iovec, n_input_iovec) \ - _LOG_CONTEXT_PUSH_IOV(input_iovec, n_input_iovec, UNIQ_T(c, UNIQ)) - -/* LOG_CONTEXT_CONSUME_STR()/LOG_CONTEXT_CONSUME_STRV()/LOG_CONTEXT_CONSUME_IOV() are identical to - * LOG_CONTEXT_PUSH_STR()/LOG_CONTEXT_PUSH_STRV()/LOG_CONTEXT_PUSH_IOV() except they take ownership of the - * given str/strv argument. - */ - -#define _LOG_CONTEXT_CONSUME_STR(s, c, strv) \ - _unused_ _cleanup_strv_free_ strv = strv_new(s); \ - if (!strv) \ - free(s); \ - _unused_ _cleanup_(log_context_unrefp) LogContext *c = log_context_new_strv_consume(TAKE_PTR(strv)) - -#define LOG_CONTEXT_CONSUME_STR(s) \ - _LOG_CONTEXT_CONSUME_STR(s, UNIQ_T(c, UNIQ), UNIQ_T(sv, UNIQ)) - -#define _LOG_CONTEXT_CONSUME_STRV(strv, c) \ - _unused_ _cleanup_(log_context_unrefp) LogContext *c = log_context_new_strv_consume(strv); - -#define LOG_CONTEXT_CONSUME_STRV(strv) \ - _LOG_CONTEXT_CONSUME_STRV(strv, UNIQ_T(c, UNIQ)) - -#define _LOG_CONTEXT_CONSUME_IOV(input_iovec, n_input_iovec, c) \ - _unused_ _cleanup_(log_context_unrefp) LogContext *c = log_context_new_iov_consume(input_iovec, n_input_iovec); - -#define LOG_CONTEXT_CONSUME_IOV(input_iovec, n_input_iovec) \ - _LOG_CONTEXT_CONSUME_IOV(input_iovec, n_input_iovec, UNIQ_T(c, UNIQ)) diff --git a/src/basic/meson.build b/src/basic/meson.build index 8d0876fc5b..c3ca1537b5 100644 --- a/src/basic/meson.build +++ b/src/basic/meson.build @@ -58,6 +58,7 @@ basic_sources = files( 'locale-util.c', 'lock-util.c', 'log.c', + 'log-context.c', 'login-util.c', 'keyring-util.c', 'memfd-util.c', diff --git a/src/core/unit.h b/src/core/unit.h index 384641f6a7..7e59443415 100644 --- a/src/core/unit.h +++ b/src/core/unit.h @@ -22,6 +22,7 @@ typedef enum UnitMountDependencyType { #include "emergency-action.h" #include "install.h" #include "list.h" +#include "log-context.h" #include "mount-util.h" #include "pidref.h" #include "unit-file.h" diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c index 6429267843..547ed945dc 100644 --- a/src/libsystemd/sd-bus/sd-bus.c +++ b/src/libsystemd/sd-bus/sd-bus.c @@ -36,6 +36,7 @@ #include "hexdecoct.h" #include "hostname-util.h" #include "io-util.h" +#include "log-context.h" #include "macro.h" #include "memory-util.h" #include "missing_syscall.h" diff --git a/src/libsystemd/sd-device/device-monitor.c b/src/libsystemd/sd-device/device-monitor.c index 1d5fa2c113..992f531be2 100644 --- a/src/libsystemd/sd-device/device-monitor.c +++ b/src/libsystemd/sd-device/device-monitor.c @@ -22,6 +22,7 @@ #include "hashmap.h" #include "io-util.h" #include "iovec-util.h" +#include "log-context.h" #include "missing_socket.h" #include "mountpoint-util.h" #include "set.h" diff --git a/src/portable/portable.c b/src/portable/portable.c index a70484eb66..9536cd9846 100644 --- a/src/portable/portable.c +++ b/src/portable/portable.c @@ -26,6 +26,7 @@ #include "install.h" #include "iovec-util.h" #include "locale-util.h" +#include "log-context.h" #include "loop-util.h" #include "mkdir.h" #include "nulstr-util.h" diff --git a/src/test/test-log.c b/src/test/test-log.c index b973ba9427..3fb0812099 100644 --- a/src/test/test-log.c +++ b/src/test/test-log.c @@ -8,6 +8,7 @@ #include "iovec-util.h" #include "iovec-wrapper.h" #include "log.h" +#include "log-context.h" #include "process-util.h" #include "string-util.h" #include "strv.h" From b14f74f9aba163321753d8599c8cdf934af46d7a Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Fri, 18 Apr 2025 11:01:10 +0200 Subject: [PATCH 03/15] basic: Move trivial cleanup/ref/unref macros from macro.h to memory-util.h Let's keep macro.h for the extremely generic macros that don't fit anywhere else. Since CLEANUP_ARRAY() is already in memory-util-fundamental.h, we can make a good case for moving the other cleanup macros in there as well. --- src/analyze/analyze-time-data.h | 1 + src/basic/fd-util.h | 1 + src/basic/gcrypt-util.h | 1 + src/basic/log-context.h | 1 + src/basic/macro.h | 53 ------------------- src/basic/memory-util.h | 53 +++++++++++++++++++ src/fundamental/macro-fundamental.h | 36 ------------- src/fundamental/memory-util-fundamental.h | 36 +++++++++++++ .../hibernate-resume-config.h | 1 + src/libsystemd-network/icmp6-packet.h | 1 + src/libudev/libudev-util.h | 1 + src/nsresourced/userns-restrict.h | 1 + src/resolve/resolved-dns-search-domain.h | 1 + src/shared/acl-util.h | 1 + src/shared/apparmor-util.h | 2 + src/shared/barrier.h | 1 + src/shared/bus-wait-for-jobs.h | 1 + src/shared/bus-wait-for-units.h | 1 + src/shared/calendarspec.h | 1 + src/shared/format-table.h | 1 + src/shared/libarchive-util.h | 2 + src/shared/libmount-util.h | 1 + src/shared/module-util.h | 1 + src/shared/open-file.h | 1 + src/shared/selinux-util.h | 2 + src/udev/udev-ctrl.h | 1 + .../xdg-autostart-service.h | 1 + 27 files changed, 115 insertions(+), 89 deletions(-) diff --git a/src/analyze/analyze-time-data.h b/src/analyze/analyze-time-data.h index fd228b5929..e8b9244476 100644 --- a/src/analyze/analyze-time-data.h +++ b/src/analyze/analyze-time-data.h @@ -3,6 +3,7 @@ #include "sd-bus.h" +#include "memory-util.h" #include "time-util.h" #include "unit-def.h" diff --git a/src/basic/fd-util.h b/src/basic/fd-util.h index 93b254c680..59c43e8140 100644 --- a/src/basic/fd-util.h +++ b/src/basic/fd-util.h @@ -8,6 +8,7 @@ #include #include "macro.h" +#include "memory-util.h" #include "missing_fcntl.h" #include "stdio-util.h" diff --git a/src/basic/gcrypt-util.h b/src/basic/gcrypt-util.h index b8b9b0b1cb..3e87493cdc 100644 --- a/src/basic/gcrypt-util.h +++ b/src/basic/gcrypt-util.h @@ -11,6 +11,7 @@ #include "dlfcn-util.h" #include "macro.h" +#include "memory-util.h" extern DLSYM_PROTOTYPE(gcry_md_close); extern DLSYM_PROTOTYPE(gcry_md_copy); diff --git a/src/basic/log-context.h b/src/basic/log-context.h index 7cff79cc31..2c15071f43 100644 --- a/src/basic/log-context.h +++ b/src/basic/log-context.h @@ -5,6 +5,7 @@ #include #include "macro.h" +#include "memory-util.h" /* * The log context allows attaching extra metadata to log messages written to the journal via log.h. We keep diff --git a/src/basic/macro.h b/src/basic/macro.h index 026ec13637..35b43f4a1b 100644 --- a/src/basic/macro.h +++ b/src/basic/macro.h @@ -251,59 +251,6 @@ static inline int __coverity_check_and_return__(int condition) { /* Pointers range from NULL to POINTER_MAX */ #define POINTER_MAX ((void*) UINTPTR_MAX) -#define _DEFINE_TRIVIAL_REF_FUNC(type, name, scope) \ - scope type *name##_ref(type *p) { \ - if (!p) \ - return NULL; \ - \ - /* For type check. */ \ - unsigned *q = &p->n_ref; \ - assert(*q > 0); \ - assert_se(*q < UINT_MAX); \ - \ - (*q)++; \ - return p; \ - } - -#define _DEFINE_TRIVIAL_UNREF_FUNC(type, name, free_func, scope) \ - scope type *name##_unref(type *p) { \ - if (!p) \ - return NULL; \ - \ - assert(p->n_ref > 0); \ - p->n_ref--; \ - if (p->n_ref > 0) \ - return NULL; \ - \ - return free_func(p); \ - } - -#define DEFINE_TRIVIAL_REF_FUNC(type, name) \ - _DEFINE_TRIVIAL_REF_FUNC(type, name,) -#define DEFINE_PRIVATE_TRIVIAL_REF_FUNC(type, name) \ - _DEFINE_TRIVIAL_REF_FUNC(type, name, static) -#define DEFINE_PUBLIC_TRIVIAL_REF_FUNC(type, name) \ - _DEFINE_TRIVIAL_REF_FUNC(type, name, _public_) - -#define DEFINE_TRIVIAL_UNREF_FUNC(type, name, free_func) \ - _DEFINE_TRIVIAL_UNREF_FUNC(type, name, free_func,) -#define DEFINE_PRIVATE_TRIVIAL_UNREF_FUNC(type, name, free_func) \ - _DEFINE_TRIVIAL_UNREF_FUNC(type, name, free_func, static) -#define DEFINE_PUBLIC_TRIVIAL_UNREF_FUNC(type, name, free_func) \ - _DEFINE_TRIVIAL_UNREF_FUNC(type, name, free_func, _public_) - -#define DEFINE_TRIVIAL_REF_UNREF_FUNC(type, name, free_func) \ - DEFINE_TRIVIAL_REF_FUNC(type, name); \ - DEFINE_TRIVIAL_UNREF_FUNC(type, name, free_func); - -#define DEFINE_PRIVATE_TRIVIAL_REF_UNREF_FUNC(type, name, free_func) \ - DEFINE_PRIVATE_TRIVIAL_REF_FUNC(type, name); \ - DEFINE_PRIVATE_TRIVIAL_UNREF_FUNC(type, name, free_func); - -#define DEFINE_PUBLIC_TRIVIAL_REF_UNREF_FUNC(type, name, free_func) \ - DEFINE_PUBLIC_TRIVIAL_REF_FUNC(type, name); \ - DEFINE_PUBLIC_TRIVIAL_UNREF_FUNC(type, name, free_func); - /* A macro to force copying of a variable from memory. This is useful whenever we want to read something from * memory and want to make sure the compiler won't optimize away the destination variable for us. It's not * supposed to be a full CPU memory barrier, i.e. CPU is still allowed to reorder the reads, but it is not diff --git a/src/basic/memory-util.h b/src/basic/memory-util.h index 0a035ef087..524e827a6c 100644 --- a/src/basic/memory-util.h +++ b/src/basic/memory-util.h @@ -120,3 +120,56 @@ static inline void erase_char(char *p) { /* Makes a copy of the buffer with reversed order of bytes */ void* memdup_reverse(const void *mem, size_t size); + +#define _DEFINE_TRIVIAL_REF_FUNC(type, name, scope) \ + scope type *name##_ref(type *p) { \ + if (!p) \ + return NULL; \ + \ + /* For type check. */ \ + unsigned *q = &p->n_ref; \ + assert(*q > 0); \ + assert_se(*q < UINT_MAX); \ + \ + (*q)++; \ + return p; \ + } + +#define _DEFINE_TRIVIAL_UNREF_FUNC(type, name, free_func, scope) \ + scope type *name##_unref(type *p) { \ + if (!p) \ + return NULL; \ + \ + assert(p->n_ref > 0); \ + p->n_ref--; \ + if (p->n_ref > 0) \ + return NULL; \ + \ + return free_func(p); \ + } + +#define DEFINE_TRIVIAL_REF_FUNC(type, name) \ + _DEFINE_TRIVIAL_REF_FUNC(type, name,) +#define DEFINE_PRIVATE_TRIVIAL_REF_FUNC(type, name) \ + _DEFINE_TRIVIAL_REF_FUNC(type, name, static) +#define DEFINE_PUBLIC_TRIVIAL_REF_FUNC(type, name) \ + _DEFINE_TRIVIAL_REF_FUNC(type, name, _public_) + +#define DEFINE_TRIVIAL_UNREF_FUNC(type, name, free_func) \ + _DEFINE_TRIVIAL_UNREF_FUNC(type, name, free_func,) +#define DEFINE_PRIVATE_TRIVIAL_UNREF_FUNC(type, name, free_func) \ + _DEFINE_TRIVIAL_UNREF_FUNC(type, name, free_func, static) +#define DEFINE_PUBLIC_TRIVIAL_UNREF_FUNC(type, name, free_func) \ + _DEFINE_TRIVIAL_UNREF_FUNC(type, name, free_func, _public_) + +#define DEFINE_TRIVIAL_REF_UNREF_FUNC(type, name, free_func) \ + DEFINE_TRIVIAL_REF_FUNC(type, name); \ + DEFINE_TRIVIAL_UNREF_FUNC(type, name, free_func); + +#define DEFINE_PRIVATE_TRIVIAL_REF_UNREF_FUNC(type, name, free_func) \ + DEFINE_PRIVATE_TRIVIAL_REF_FUNC(type, name); \ + DEFINE_PRIVATE_TRIVIAL_UNREF_FUNC(type, name, free_func); + +#define DEFINE_PUBLIC_TRIVIAL_REF_UNREF_FUNC(type, name, free_func) \ + DEFINE_PUBLIC_TRIVIAL_REF_FUNC(type, name); \ + DEFINE_PUBLIC_TRIVIAL_UNREF_FUNC(type, name, free_func); diff --git a/src/fundamental/macro-fundamental.h b/src/fundamental/macro-fundamental.h index 1d39d60ae8..6c6e02b6bc 100644 --- a/src/fundamental/macro-fundamental.h +++ b/src/fundamental/macro-fundamental.h @@ -521,42 +521,6 @@ static inline uint64_t ALIGN_OFFSET_U64(uint64_t l, uint64_t ali) { #define FLAGS_SET(v, flags) \ ((~(v) & (flags)) == 0) -/* A wrapper for 'func' to return void. - * Only useful when a void-returning function is required by some API. */ -#define DEFINE_TRIVIAL_DESTRUCTOR(name, type, func) \ - static inline void name(type *p) { \ - func(p); \ - } - -/* When func() returns the void value (NULL, -1, …) of the appropriate type */ -#define DEFINE_TRIVIAL_CLEANUP_FUNC(type, func) \ - static inline void func##p(type *p) { \ - if (*p) \ - *p = func(*p); \ - } - -/* When func() doesn't return the appropriate type, set variable to empty afterwards. - * The func() may be provided by a dynamically loaded shared library, hence add an assertion. */ -#define DEFINE_TRIVIAL_CLEANUP_FUNC_FULL(type, func, empty) \ - static inline void func##p(type *p) { \ - if (*p != (empty)) { \ - DISABLE_WARNING_ADDRESS; \ - assert(func); \ - REENABLE_WARNING; \ - func(*p); \ - *p = (empty); \ - } \ - } - -/* When func() doesn't return the appropriate type, and is also a macro, set variable to empty afterwards. */ -#define DEFINE_TRIVIAL_CLEANUP_FUNC_FULL_MACRO(type, func, empty) \ - static inline void func##p(type *p) { \ - if (*p != (empty)) { \ - func(*p); \ - *p = (empty); \ - } \ - } - /* Restriction/bug (see below) was fixed in GCC 15 and clang 19. */ #if __GNUC__ >= 15 || (defined(__clang__) && __clang_major__ >= 19) #define DECLARE_FLEX_ARRAY(type, name) type name[] diff --git a/src/fundamental/memory-util-fundamental.h b/src/fundamental/memory-util-fundamental.h index 6c3aac34a2..068f5ee215 100644 --- a/src/fundamental/memory-util-fundamental.h +++ b/src/fundamental/memory-util-fundamental.h @@ -106,3 +106,39 @@ static inline void array_cleanup(const ArrayCleanup *c) { _f; \ }), \ } + +/* A wrapper for 'func' to return void. + * Only useful when a void-returning function is required by some API. */ +#define DEFINE_TRIVIAL_DESTRUCTOR(name, type, func) \ + static inline void name(type *p) { \ + func(p); \ + } + +/* When func() returns the void value (NULL, -1, …) of the appropriate type */ +#define DEFINE_TRIVIAL_CLEANUP_FUNC(type, func) \ + static inline void func##p(type *p) { \ + if (*p) \ + *p = func(*p); \ + } + +/* When func() doesn't return the appropriate type, set variable to empty afterwards. + * The func() may be provided by a dynamically loaded shared library, hence add an assertion. */ +#define DEFINE_TRIVIAL_CLEANUP_FUNC_FULL(type, func, empty) \ + static inline void func##p(type *p) { \ + if (*p != (empty)) { \ + DISABLE_WARNING_ADDRESS; \ + assert(func); \ + REENABLE_WARNING; \ + func(*p); \ + *p = (empty); \ + } \ + } + +/* When func() doesn't return the appropriate type, and is also a macro, set variable to empty afterwards. */ +#define DEFINE_TRIVIAL_CLEANUP_FUNC_FULL_MACRO(type, func, empty) \ + static inline void func##p(type *p) { \ + if (*p != (empty)) { \ + func(*p); \ + *p = (empty); \ + } \ + } diff --git a/src/hibernate-resume/hibernate-resume-config.h b/src/hibernate-resume/hibernate-resume-config.h index 68ef075355..24cc8dd2a4 100644 --- a/src/hibernate-resume/hibernate-resume-config.h +++ b/src/hibernate-resume/hibernate-resume-config.h @@ -6,6 +6,7 @@ #include "sd-id128.h" #include "macro.h" +#include "memory-util.h" typedef struct KernelHibernateLocation KernelHibernateLocation; diff --git a/src/libsystemd-network/icmp6-packet.h b/src/libsystemd-network/icmp6-packet.h index b402255806..dc5c1ab5e7 100644 --- a/src/libsystemd-network/icmp6-packet.h +++ b/src/libsystemd-network/icmp6-packet.h @@ -5,6 +5,7 @@ #include #include "macro.h" +#include "memory-util.h" #include "time-util.h" typedef struct ICMP6Pakcet { diff --git a/src/libudev/libudev-util.h b/src/libudev/libudev-util.h index 0dc18d44be..a02021845d 100644 --- a/src/libudev/libudev-util.h +++ b/src/libudev/libudev-util.h @@ -4,6 +4,7 @@ #include "libudev.h" #include "macro.h" +#include "memory-util.h" /* Cleanup functions */ DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev*, udev_unref); diff --git a/src/nsresourced/userns-restrict.h b/src/nsresourced/userns-restrict.h index 37aed7b350..92c8c9f211 100644 --- a/src/nsresourced/userns-restrict.h +++ b/src/nsresourced/userns-restrict.h @@ -4,6 +4,7 @@ #include #include "macro.h" +#include "memory-util.h" #if HAVE_VMLINUX_H #include "bpf/userns_restrict/userns-restrict-skel.h" diff --git a/src/resolve/resolved-dns-search-domain.h b/src/resolve/resolved-dns-search-domain.h index 3e5229c12f..fbd9a4490f 100644 --- a/src/resolve/resolved-dns-search-domain.h +++ b/src/resolve/resolved-dns-search-domain.h @@ -5,6 +5,7 @@ #include "list.h" #include "macro.h" +#include "memory-util.h" typedef struct DnsSearchDomain DnsSearchDomain; typedef struct Link Link; diff --git a/src/shared/acl-util.h b/src/shared/acl-util.h index ef315c2f11..3fe3d6c735 100644 --- a/src/shared/acl-util.h +++ b/src/shared/acl-util.h @@ -13,6 +13,7 @@ int fd_acl_make_writable_fallback(int fd); #include #include "macro.h" +#include "memory-util.h" int acl_find_uid(acl_t acl, uid_t uid, acl_entry_t *entry); int calc_acl_mask_if_needed(acl_t *acl_p); diff --git a/src/shared/apparmor-util.h b/src/shared/apparmor-util.h index d19c903536..e88bf9d111 100644 --- a/src/shared/apparmor-util.h +++ b/src/shared/apparmor-util.h @@ -8,6 +8,8 @@ #if HAVE_APPARMOR # include +#include "memory-util.h" + extern DLSYM_PROTOTYPE(aa_change_onexec); extern DLSYM_PROTOTYPE(aa_change_profile); extern DLSYM_PROTOTYPE(aa_features_new_from_kernel); diff --git a/src/shared/barrier.h b/src/shared/barrier.h index 4ee2040195..e108aebeb2 100644 --- a/src/shared/barrier.h +++ b/src/shared/barrier.h @@ -5,6 +5,7 @@ #include #include +#include "memory-util.h" #include "macro.h" /* See source file for an API description. */ diff --git a/src/shared/bus-wait-for-jobs.h b/src/shared/bus-wait-for-jobs.h index 2336b1332a..ff15ede19c 100644 --- a/src/shared/bus-wait-for-jobs.h +++ b/src/shared/bus-wait-for-jobs.h @@ -4,6 +4,7 @@ #include "sd-bus.h" #include "macro.h" +#include "memory-util.h" typedef struct BusWaitForJobs BusWaitForJobs; diff --git a/src/shared/bus-wait-for-units.h b/src/shared/bus-wait-for-units.h index a4a4dc42a5..f1004ea36a 100644 --- a/src/shared/bus-wait-for-units.h +++ b/src/shared/bus-wait-for-units.h @@ -2,6 +2,7 @@ #pragma once #include "macro.h" +#include "memory-util.h" #include "sd-bus.h" typedef struct BusWaitForUnits BusWaitForUnits; diff --git a/src/shared/calendarspec.h b/src/shared/calendarspec.h index 60c1c79267..9a8bdbd21a 100644 --- a/src/shared/calendarspec.h +++ b/src/shared/calendarspec.h @@ -6,6 +6,7 @@ #include +#include "memory-util.h" #include "time-util.h" typedef struct CalendarComponent { diff --git a/src/shared/format-table.h b/src/shared/format-table.h index bb2eb70759..cc62b553a7 100644 --- a/src/shared/format-table.h +++ b/src/shared/format-table.h @@ -8,6 +8,7 @@ #include "sd-json.h" #include "macro.h" +#include "memory-util.h" #include "pager.h" typedef enum TableDataType { diff --git a/src/shared/libarchive-util.h b/src/shared/libarchive-util.h index fb2aae91ce..1efdacdd36 100644 --- a/src/shared/libarchive-util.h +++ b/src/shared/libarchive-util.h @@ -7,6 +7,8 @@ #include #include +#include "memory-util.h" + extern DLSYM_PROTOTYPE(archive_entry_free); extern DLSYM_PROTOTYPE(archive_entry_new); extern DLSYM_PROTOTYPE(archive_entry_set_ctime); diff --git a/src/shared/libmount-util.h b/src/shared/libmount-util.h index 0986ed64bf..b559fa5975 100644 --- a/src/shared/libmount-util.h +++ b/src/shared/libmount-util.h @@ -6,6 +6,7 @@ #include "fstab-util.h" #include "macro.h" +#include "memory-util.h" DEFINE_TRIVIAL_CLEANUP_FUNC_FULL(struct libmnt_table*, mnt_free_table, NULL); DEFINE_TRIVIAL_CLEANUP_FUNC_FULL(struct libmnt_iter*, mnt_free_iter, NULL); diff --git a/src/shared/module-util.h b/src/shared/module-util.h index 59b2b7e083..8fd6a7f8e6 100644 --- a/src/shared/module-util.h +++ b/src/shared/module-util.h @@ -8,6 +8,7 @@ #include #include "macro.h" +#include "memory-util.h" extern DLSYM_PROTOTYPE(kmod_list_next); extern DLSYM_PROTOTYPE(kmod_load_resources); diff --git a/src/shared/open-file.h b/src/shared/open-file.h index 4999c96ae7..fe38801001 100644 --- a/src/shared/open-file.h +++ b/src/shared/open-file.h @@ -3,6 +3,7 @@ #include "list.h" #include "macro.h" +#include "memory-util.h" typedef enum OpenFileFlag { OPENFILE_READ_ONLY = 1 << 0, diff --git a/src/shared/selinux-util.h b/src/shared/selinux-util.h index 12627f94ec..d47b9a235a 100644 --- a/src/shared/selinux-util.h +++ b/src/shared/selinux-util.h @@ -12,6 +12,8 @@ #if HAVE_SELINUX #include +#include "memory-util.h" + DEFINE_TRIVIAL_CLEANUP_FUNC_FULL(char*, freecon, NULL); #else static inline void freeconp(char **p) { diff --git a/src/udev/udev-ctrl.h b/src/udev/udev-ctrl.h index bcdd849d0d..0339d33d57 100644 --- a/src/udev/udev-ctrl.h +++ b/src/udev/udev-ctrl.h @@ -4,6 +4,7 @@ #include "sd-event.h" #include "macro.h" +#include "memory-util.h" #include "time-util.h" typedef struct UdevCtrl UdevCtrl; diff --git a/src/xdg-autostart-generator/xdg-autostart-service.h b/src/xdg-autostart-generator/xdg-autostart-service.h index 390670eede..d540a7396c 100644 --- a/src/xdg-autostart-generator/xdg-autostart-service.h +++ b/src/xdg-autostart-generator/xdg-autostart-service.h @@ -2,6 +2,7 @@ #pragma once #include "macro.h" +#include "memory-util.h" typedef struct XdgAutostartService { char *name; From 4a52d26d2b853cbe30affaac7ed113846c58cd20 Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Sat, 12 Apr 2025 11:22:52 +0200 Subject: [PATCH 04/15] basic: Remove list.h include from log.h --- src/basic/log-context.h | 1 + src/basic/log.c | 1 + src/basic/log.h | 1 - src/pcrlock/pcrlock.c | 1 + src/shutdown/detach-dm.c | 1 + src/shutdown/detach-loopback.c | 1 + src/shutdown/detach-md.c | 1 + src/shutdown/detach-swap.c | 1 + src/udev/udev-manager.h | 1 + 9 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/basic/log-context.h b/src/basic/log-context.h index 2c15071f43..84339695bf 100644 --- a/src/basic/log-context.h +++ b/src/basic/log-context.h @@ -4,6 +4,7 @@ #include #include +#include "list.h" #include "macro.h" #include "memory-util.h" diff --git a/src/basic/log.c b/src/basic/log.c index c244666f1f..0c50cde0b4 100644 --- a/src/basic/log.c +++ b/src/basic/log.c @@ -24,6 +24,7 @@ #include "fd-util.h" #include "format-util.h" #include "iovec-util.h" +#include "list.h" #include "log.h" #include "log-context.h" #include "macro.h" diff --git a/src/basic/log.h b/src/basic/log.h index e6b6a4b4fe..f52fb004e7 100644 --- a/src/basic/log.h +++ b/src/basic/log.h @@ -7,7 +7,6 @@ #include #include -#include "list.h" #include "macro.h" #include "stdio-util.h" diff --git a/src/pcrlock/pcrlock.c b/src/pcrlock/pcrlock.c index bf7437ef14..8e3a38929c 100644 --- a/src/pcrlock/pcrlock.c +++ b/src/pcrlock/pcrlock.c @@ -32,6 +32,7 @@ #include "hexdecoct.h" #include "initrd-util.h" #include "json-util.h" +#include "list.h" #include "main-func.h" #include "mkdir-label.h" #include "openssl-util.h" diff --git a/src/shutdown/detach-dm.c b/src/shutdown/detach-dm.c index 88e6a47a27..e6b3e808d3 100644 --- a/src/shutdown/detach-dm.c +++ b/src/shutdown/detach-dm.c @@ -15,6 +15,7 @@ #include "devnum-util.h" #include "errno-util.h" #include "fd-util.h" +#include "list.h" #include "shutdown.h" typedef struct DeviceMapper { diff --git a/src/shutdown/detach-loopback.c b/src/shutdown/detach-loopback.c index 25288af221..aa50299694 100644 --- a/src/shutdown/detach-loopback.c +++ b/src/shutdown/detach-loopback.c @@ -19,6 +19,7 @@ #include "device-util.h" #include "errno-util.h" #include "fd-util.h" +#include "list.h" #include "shutdown.h" typedef struct LoopbackDevice { diff --git a/src/shutdown/detach-md.c b/src/shutdown/detach-md.c index 8b88d9b870..be24bc20ba 100644 --- a/src/shutdown/detach-md.c +++ b/src/shutdown/detach-md.c @@ -17,6 +17,7 @@ #include "devnum-util.h" #include "errno-util.h" #include "fd-util.h" +#include "list.h" #include "shutdown.h" #include "string-util.h" diff --git a/src/shutdown/detach-swap.c b/src/shutdown/detach-swap.c index eafdc4341e..4c47636fc6 100644 --- a/src/shutdown/detach-swap.c +++ b/src/shutdown/detach-swap.c @@ -9,6 +9,7 @@ #include "detach-swap.h" #include "errno-util.h" #include "libmount-util.h" +#include "list.h" static void swap_device_free(SwapDevice **head, SwapDevice *m) { assert(head); diff --git a/src/udev/udev-manager.h b/src/udev/udev-manager.h index 806adb3ef8..9526265154 100644 --- a/src/udev/udev-manager.h +++ b/src/udev/udev-manager.h @@ -8,6 +8,7 @@ #include "sd-varlink.h" #include "hashmap.h" +#include "list.h" #include "macro.h" #include "time-util.h" #include "udev-config.h" From 69ebfef1a1c1397169e77567802b8e3006d6f0f4 Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Sat, 12 Apr 2025 11:28:27 +0200 Subject: [PATCH 05/15] basic: Remove stdio-util.h include from log.h --- src/basic/format-ifname.c | 1 + src/basic/log.h | 1 - src/libsystemd-network/sd-dns-resolver.c | 1 + src/network/networkctl-status-link.c | 1 + src/network/networkctl-util.c | 1 + src/shared/coredump-util.c | 1 + src/shared/tests.h | 1 + 7 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/basic/format-ifname.c b/src/basic/format-ifname.c index ce4933c57d..9d3952f27e 100644 --- a/src/basic/format-ifname.c +++ b/src/basic/format-ifname.c @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #include "format-ifname.h" +#include "stdio-util.h" #include "string-util.h" assert_cc(STRLEN("%") + DECIMAL_STR_MAX(int) <= IF_NAMESIZE); diff --git a/src/basic/log.h b/src/basic/log.h index f52fb004e7..34d2a5eb29 100644 --- a/src/basic/log.h +++ b/src/basic/log.h @@ -8,7 +8,6 @@ #include #include "macro.h" -#include "stdio-util.h" /* Some structures we reference but don't want to pull in headers for */ struct iovec; diff --git a/src/libsystemd-network/sd-dns-resolver.c b/src/libsystemd-network/sd-dns-resolver.c index b24152f17e..1490f5f9a5 100644 --- a/src/libsystemd-network/sd-dns-resolver.c +++ b/src/libsystemd-network/sd-dns-resolver.c @@ -4,6 +4,7 @@ #include "macro.h" #include "unaligned.h" #include "socket-netlink.h" +#include "stdio-util.h" #include "string-table.h" #include "string-util.h" #include "strv.h" diff --git a/src/network/networkctl-status-link.c b/src/network/networkctl-status-link.c index c79478495d..ac62ca583f 100644 --- a/src/network/networkctl-status-link.c +++ b/src/network/networkctl-status-link.c @@ -26,6 +26,7 @@ #include "networkctl-status-link.h" #include "networkctl-status-system.h" #include "networkctl-util.h" +#include "stdio-util.h" #include "strv.h" #include "udev-util.h" diff --git a/src/network/networkctl-util.c b/src/network/networkctl-util.c index 88620aad53..2f0fc33b07 100644 --- a/src/network/networkctl-util.c +++ b/src/network/networkctl-util.c @@ -6,6 +6,7 @@ #include "ansi-color.h" #include "networkctl.h" #include "networkctl-util.h" +#include "stdio-util.h" #include "strv.h" #include "varlink-util.h" diff --git a/src/shared/coredump-util.c b/src/shared/coredump-util.c index 805503f366..740fd43894 100644 --- a/src/shared/coredump-util.c +++ b/src/shared/coredump-util.c @@ -5,6 +5,7 @@ #include "coredump-util.h" #include "extract-word.h" #include "fileio.h" +#include "stdio-util.h" #include "string-table.h" #include "unaligned.h" #include "virt.h" diff --git a/src/shared/tests.h b/src/shared/tests.h index f3506a5625..42cdac9415 100644 --- a/src/shared/tests.h +++ b/src/shared/tests.h @@ -14,6 +14,7 @@ #include "rlimit-util.h" #include "signal-util.h" #include "static-destruct.h" +#include "stdio-util.h" #include "strv.h" static inline void log_set_assert_return_is_criticalp(bool *p) { From 5a124e8ee1843f6e49db56fad66f96a5d4980878 Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Sat, 12 Apr 2025 14:04:19 +0200 Subject: [PATCH 06/15] macro: Move definition of dummy_t to macro-fundamental.h There is code in macro-fundamental.h that makes use of dummy_t so let's make sure to declare dummy_t in macro-fundamental.h as well. --- src/basic/macro.h | 6 ------ src/fundamental/macro-fundamental.h | 6 ++++++ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/basic/macro.h b/src/basic/macro.h index 35b43f4a1b..2b3c02c324 100644 --- a/src/basic/macro.h +++ b/src/basic/macro.h @@ -275,12 +275,6 @@ static inline size_t size_add(size_t x, size_t y) { return saturate_add(x, y, SIZE_MAX); } -typedef struct { - int _empty[0]; -} dummy_t; - -assert_cc(sizeof(dummy_t) == 0); - /* A little helper for subtracting 1 off a pointer in a safe UB-free way. This is intended to be used for * loops that count down from a high pointer until some base. A naive loop would implement this like this: * diff --git a/src/fundamental/macro-fundamental.h b/src/fundamental/macro-fundamental.h index 6c6e02b6bc..06fca4a8e5 100644 --- a/src/fundamental/macro-fundamental.h +++ b/src/fundamental/macro-fundamental.h @@ -521,6 +521,12 @@ static inline uint64_t ALIGN_OFFSET_U64(uint64_t l, uint64_t ali) { #define FLAGS_SET(v, flags) \ ((~(v) & (flags)) == 0) +typedef struct { + int _empty[0]; +} dummy_t; + +assert_cc(sizeof(dummy_t) == 0); + /* Restriction/bug (see below) was fixed in GCC 15 and clang 19. */ #if __GNUC__ >= 15 || (defined(__clang__) && __clang_major__ >= 19) #define DECLARE_FLEX_ARRAY(type, name) type name[] From edfd847d47584f8772d8e818f42f34882e594aaa Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Fri, 18 Apr 2025 11:26:43 +0200 Subject: [PATCH 07/15] fundamental: Move alignment logic to memory-util-fundamental.h Aligning is closely related to memory management, so let's move these macros and functions to memory-util-fundamental.h. This will allow us to move assertion related logic out of macro-fundamental.h as well in a later commit. --- src/fundamental/macro-fundamental.h | 76 ----------------------- src/fundamental/memory-util-fundamental.h | 76 +++++++++++++++++++++++ 2 files changed, 76 insertions(+), 76 deletions(-) diff --git a/src/fundamental/macro-fundamental.h b/src/fundamental/macro-fundamental.h index 06fca4a8e5..ac18326a43 100644 --- a/src/fundamental/macro-fundamental.h +++ b/src/fundamental/macro-fundamental.h @@ -438,82 +438,6 @@ (typeof(memory)) NULL; \ }) -static inline size_t ALIGN_TO(size_t l, size_t ali) { - assert(ISPOWEROF2(ali)); - - if (l > SIZE_MAX - (ali - 1)) - return SIZE_MAX; /* indicate overflow */ - - return ((l + (ali - 1)) & ~(ali - 1)); -} - -static inline uint64_t ALIGN_TO_U64(uint64_t l, uint64_t ali) { - assert(ISPOWEROF2(ali)); - - if (l > UINT64_MAX - (ali - 1)) - return UINT64_MAX; /* indicate overflow */ - - return ((l + (ali - 1)) & ~(ali - 1)); -} - -static inline size_t ALIGN_DOWN(size_t l, size_t ali) { - assert(ISPOWEROF2(ali)); - - return l & ~(ali - 1); -} - -static inline uint64_t ALIGN_DOWN_U64(uint64_t l, uint64_t ali) { - assert(ISPOWEROF2(ali)); - - return l & ~(ali - 1); -} - -static inline size_t ALIGN_OFFSET(size_t l, size_t ali) { - assert(ISPOWEROF2(ali)); - - return l & (ali - 1); -} - -static inline uint64_t ALIGN_OFFSET_U64(uint64_t l, uint64_t ali) { - assert(ISPOWEROF2(ali)); - - return l & (ali - 1); -} - -#define ALIGN2(l) ALIGN_TO(l, 2) -#define ALIGN4(l) ALIGN_TO(l, 4) -#define ALIGN8(l) ALIGN_TO(l, 8) -#define ALIGN2_PTR(p) ((void*) ALIGN2((uintptr_t) p)) -#define ALIGN4_PTR(p) ((void*) ALIGN4((uintptr_t) p)) -#define ALIGN8_PTR(p) ((void*) ALIGN8((uintptr_t) p)) -#define ALIGN(l) ALIGN_TO(l, sizeof(void*)) -#define ALIGN_PTR(p) ((void*) ALIGN((uintptr_t) (p))) - -/* Checks if the specified pointer is aligned as appropriate for the specific type */ -#define IS_ALIGNED16(p) (((uintptr_t) p) % alignof(uint16_t) == 0) -#define IS_ALIGNED32(p) (((uintptr_t) p) % alignof(uint32_t) == 0) -#define IS_ALIGNED64(p) (((uintptr_t) p) % alignof(uint64_t) == 0) - -/* Same as ALIGN_TO but callable in constant contexts. */ -#define CONST_ALIGN_TO(l, ali) \ - __builtin_choose_expr( \ - __builtin_constant_p(l) && \ - __builtin_constant_p(ali) && \ - CONST_ISPOWEROF2(ali) && \ - (l <= SIZE_MAX - (ali - 1)), /* overflow? */ \ - ((l) + (ali) - 1) & ~((ali) - 1), \ - VOID_0) - -/* Similar to ((t *) (void *) (p)) to cast a pointer. The macro asserts that the pointer has a suitable - * alignment for type "t". This exists for places where otherwise "-Wcast-align=strict" would issue a - * warning or if you want to assert that the cast gives a pointer of suitable alignment. */ -#define CAST_ALIGN_PTR(t, p) \ - ({ \ - const void *_p = (p); \ - assert(((uintptr_t) _p) % alignof(t) == 0); \ - (t *) _p; \ - }) - #define UPDATE_FLAG(orig, flag, b) \ ((b) ? ((orig) | (flag)) : ((orig) & ~(flag))) #define SET_FLAG(v, flag, b) \ diff --git a/src/fundamental/memory-util-fundamental.h b/src/fundamental/memory-util-fundamental.h index 068f5ee215..f42d54f97a 100644 --- a/src/fundamental/memory-util-fundamental.h +++ b/src/fundamental/memory-util-fundamental.h @@ -142,3 +142,79 @@ static inline void array_cleanup(const ArrayCleanup *c) { *p = (empty); \ } \ } + +static inline size_t ALIGN_TO(size_t l, size_t ali) { + assert(ISPOWEROF2(ali)); + + if (l > SIZE_MAX - (ali - 1)) + return SIZE_MAX; /* indicate overflow */ + + return ((l + (ali - 1)) & ~(ali - 1)); +} + +static inline uint64_t ALIGN_TO_U64(uint64_t l, uint64_t ali) { + assert(ISPOWEROF2(ali)); + + if (l > UINT64_MAX - (ali - 1)) + return UINT64_MAX; /* indicate overflow */ + + return ((l + (ali - 1)) & ~(ali - 1)); +} + +static inline size_t ALIGN_DOWN(size_t l, size_t ali) { + assert(ISPOWEROF2(ali)); + + return l & ~(ali - 1); +} + +static inline uint64_t ALIGN_DOWN_U64(uint64_t l, uint64_t ali) { + assert(ISPOWEROF2(ali)); + + return l & ~(ali - 1); +} + +static inline size_t ALIGN_OFFSET(size_t l, size_t ali) { + assert(ISPOWEROF2(ali)); + + return l & (ali - 1); +} + +static inline uint64_t ALIGN_OFFSET_U64(uint64_t l, uint64_t ali) { + assert(ISPOWEROF2(ali)); + + return l & (ali - 1); +} + +#define ALIGN2(l) ALIGN_TO(l, 2) +#define ALIGN4(l) ALIGN_TO(l, 4) +#define ALIGN8(l) ALIGN_TO(l, 8) +#define ALIGN2_PTR(p) ((void*) ALIGN2((uintptr_t) p)) +#define ALIGN4_PTR(p) ((void*) ALIGN4((uintptr_t) p)) +#define ALIGN8_PTR(p) ((void*) ALIGN8((uintptr_t) p)) +#define ALIGN(l) ALIGN_TO(l, sizeof(void*)) +#define ALIGN_PTR(p) ((void*) ALIGN((uintptr_t) (p))) + +/* Checks if the specified pointer is aligned as appropriate for the specific type */ +#define IS_ALIGNED16(p) (((uintptr_t) p) % alignof(uint16_t) == 0) +#define IS_ALIGNED32(p) (((uintptr_t) p) % alignof(uint32_t) == 0) +#define IS_ALIGNED64(p) (((uintptr_t) p) % alignof(uint64_t) == 0) + +/* Same as ALIGN_TO but callable in constant contexts. */ +#define CONST_ALIGN_TO(l, ali) \ + __builtin_choose_expr( \ + __builtin_constant_p(l) && \ + __builtin_constant_p(ali) && \ + CONST_ISPOWEROF2(ali) && \ + (l <= SIZE_MAX - (ali - 1)), /* overflow? */ \ + ((l) + (ali) - 1) & ~((ali) - 1), \ + VOID_0) + +/* Similar to ((t *) (void *) (p)) to cast a pointer. The macro asserts that the pointer has a suitable + * alignment for type "t". This exists for places where otherwise "-Wcast-align=strict" would issue a + * warning or if you want to assert that the cast gives a pointer of suitable alignment. */ +#define CAST_ALIGN_PTR(t, p) \ + ({ \ + const void *_p = (p); \ + assert(((uintptr_t) _p) % alignof(t) == 0); \ + (t *) _p; \ + }) From 03e17cbe6e3085819d44e8861ce5452c6a158d76 Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Sat, 12 Apr 2025 14:14:04 +0200 Subject: [PATCH 08/15] basic: Move assertion specific functions to assert-util.h Various functions in log.h are only used by asserts, and there's enough assertion related stuff in macro.h to justify a separate header which also makes it easier to avoid circular dependencies. Let's introduce assert-util.h and an accompanying fundamental header and move all the assertion related stuff over there. PROJECT_FILE is moved over to macro.h. --- src/basic/alloc-util.h | 1 + src/basic/argv-util.h | 1 + src/basic/assert-util.c | 65 +++++++++++++++++ src/basic/assert-util.h | 84 ++++++++++++++++++++++ src/basic/dlfcn-util.h | 1 + src/basic/errno-util.h | 1 + src/basic/log.c | 68 ------------------ src/basic/log.h | 24 ------- src/basic/macro.h | 73 +------------------ src/basic/meson.build | 1 + src/basic/signal-util.h | 1 + src/basic/stdio-util.h | 1 + src/boot/bcd.c | 1 + src/fundamental/assert-fundamental.h | 45 ++++++++++++ src/fundamental/iovec-util-fundamental.h | 2 + src/fundamental/macro-fundamental.h | 34 --------- src/fundamental/memory-util-fundamental.h | 1 + src/fundamental/sha256-fundamental.c | 1 + src/fundamental/string-util-fundamental.h | 1 + src/fuzz/fuzz.h | 1 + src/shared/fstab-util.h | 1 + src/shared/osc-context.h | 1 + src/shared/pretty-print.h | 1 + src/sysupdate/sysupdate-update-set-flags.c | 1 + src/test/test-dlopen.c | 1 + src/test/test-sizeof.c | 1 + src/udev/udevadm-hwdb.c | 1 + 27 files changed, 218 insertions(+), 196 deletions(-) create mode 100644 src/basic/assert-util.c create mode 100644 src/basic/assert-util.h create mode 100644 src/fundamental/assert-fundamental.h diff --git a/src/basic/alloc-util.h b/src/basic/alloc-util.h index e589a94fd0..8bb3c42113 100644 --- a/src/basic/alloc-util.h +++ b/src/basic/alloc-util.h @@ -7,6 +7,7 @@ #include #include +#include "assert-util.h" #include "macro.h" #if HAS_FEATURE_MEMORY_SANITIZER diff --git a/src/basic/argv-util.h b/src/basic/argv-util.h index a20a951793..deaa7c04e6 100644 --- a/src/basic/argv-util.h +++ b/src/basic/argv-util.h @@ -3,6 +3,7 @@ #include +#include "assert-util.h" #include "macro.h" extern int saved_argc; diff --git a/src/basic/assert-util.c b/src/basic/assert-util.c new file mode 100644 index 0000000000..f4cf97ad28 --- /dev/null +++ b/src/basic/assert-util.c @@ -0,0 +1,65 @@ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ + +#include + +#include "assert-util.h" +#include "errno-util.h" +#include "log.h" + +static bool assert_return_is_critical = BUILD_MODE_DEVELOPER; + +/* Akin to glibc's __abort_msg; which is private and we hence cannot + * use here. */ +static char *log_abort_msg = NULL; + +void log_set_assert_return_is_critical(bool b) { + assert_return_is_critical = b; +} + +bool log_get_assert_return_is_critical(void) { + return assert_return_is_critical; +} + +static void log_assert( + int level, + const char *text, + const char *file, + int line, + const char *func, + const char *format) { + + static char buffer[LINE_MAX]; + + if (_likely_(LOG_PRI(level) > log_get_max_level())) + return; + + DISABLE_WARNING_FORMAT_NONLITERAL; + (void) snprintf(buffer, sizeof buffer, format, text, file, line, func); + REENABLE_WARNING; + + log_abort_msg = buffer; + + log_dispatch_internal(level, 0, file, line, func, NULL, NULL, NULL, NULL, buffer); +} + +_noreturn_ void log_assert_failed(const char *text, const char *file, int line, const char *func) { + log_assert(LOG_CRIT, text, file, line, func, + "Assertion '%s' failed at %s:%u, function %s(). Aborting."); + abort(); +} + +_noreturn_ void log_assert_failed_unreachable(const char *file, int line, const char *func) { + log_assert(LOG_CRIT, "Code should not be reached", file, line, func, + "%s at %s:%u, function %s(). Aborting. 💥"); + abort(); +} + +void log_assert_failed_return(const char *text, const char *file, int line, const char *func) { + + if (assert_return_is_critical) + log_assert_failed(text, file, line, func); + + PROTECT_ERRNO; + log_assert(LOG_DEBUG, text, file, line, func, + "Assertion '%s' failed at %s:%u, function %s(), ignoring."); +} diff --git a/src/basic/assert-util.h b/src/basic/assert-util.h new file mode 100644 index 0000000000..9383a6bb60 --- /dev/null +++ b/src/basic/assert-util.h @@ -0,0 +1,84 @@ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ +#pragma once + +#include "assert-fundamental.h" +#include "macro.h" + +/* Logging for various assertions */ + +void log_set_assert_return_is_critical(bool b); +bool log_get_assert_return_is_critical(void) _pure_; + +_noreturn_ void log_assert_failed(const char *text, const char *file, int line, const char *func); +_noreturn_ void log_assert_failed_unreachable(const char *file, int line, const char *func); +void log_assert_failed_return(const char *text, const char *file, int line, const char *func); + +#ifdef __COVERITY__ + +/* Use special definitions of assertion macros in order to prevent + * false positives of ASSERT_SIDE_EFFECT on Coverity static analyzer + * for uses of assert_se() and assert_return(). + * + * These definitions make expression go through a (trivial) function + * call to ensure they are not discarded. Also use ! or !! to ensure + * the boolean expressions are seen as such. + * + * This technique has been described and recommended in: + * https://community.synopsys.com/s/question/0D534000046Yuzb/suppressing-assertsideeffect-for-functions-that-allow-for-sideeffects + */ + +extern void __coverity_panic__(void); + +static inline void __coverity_check__(int condition) { + if (!condition) + __coverity_panic__(); +} + +static inline int __coverity_check_and_return__(int condition) { + return condition; +} + +#define assert_message_se(expr, message) __coverity_check__(!!(expr)) + +#define assert_log(expr, message) __coverity_check_and_return__(!!(expr)) + +#else /* ! __COVERITY__ */ + +#define assert_message_se(expr, message) \ + do { \ + if (_unlikely_(!(expr))) \ + log_assert_failed(message, PROJECT_FILE, __LINE__, __func__); \ + } while (false) + +#define assert_log(expr, message) ((_likely_(expr)) \ + ? (true) \ + : (log_assert_failed_return(message, PROJECT_FILE, __LINE__, __func__), false)) + +#endif /* __COVERITY__ */ + +#define assert_se(expr) assert_message_se(expr, #expr) + +/* We override the glibc assert() here. */ +#undef assert +#ifdef NDEBUG +#define assert(expr) ({ if (!(expr)) __builtin_unreachable(); }) +#else +#define assert(expr) assert_message_se(expr, #expr) +#endif + +#define assert_not_reached() \ + log_assert_failed_unreachable(PROJECT_FILE, __LINE__, __func__) + +#define assert_return(expr, r) \ + do { \ + if (!assert_log(expr, #expr)) \ + return (r); \ + } while (false) + +#define assert_return_errno(expr, r, err) \ + do { \ + if (!assert_log(expr, #expr)) { \ + errno = err; \ + return (r); \ + } \ + } while (false) diff --git a/src/basic/dlfcn-util.h b/src/basic/dlfcn-util.h index 17c084ae73..e92e00b1e8 100644 --- a/src/basic/dlfcn-util.h +++ b/src/basic/dlfcn-util.h @@ -3,6 +3,7 @@ #include +#include "assert-util.h" #include "macro.h" static inline void* safe_dlclose(void *dl) { diff --git a/src/basic/errno-util.h b/src/basic/errno-util.h index 02572e3bdc..01b4d59e04 100644 --- a/src/basic/errno-util.h +++ b/src/basic/errno-util.h @@ -5,6 +5,7 @@ #include #include +#include "assert-util.h" #include "macro.h" /* strerror(3) says that glibc uses a maximum length of 1024 bytes. */ diff --git a/src/basic/log.c b/src/basic/log.c index 0c50cde0b4..3d2346f686 100644 --- a/src/basic/log.c +++ b/src/basic/log.c @@ -78,11 +78,6 @@ static bool upgrade_syslog_to_journal = false; static bool always_reopen_console = false; static bool open_when_needed = false; static bool prohibit_ipc = false; -static bool assert_return_is_critical = BUILD_MODE_DEVELOPER; - -/* Akin to glibc's __abort_msg; which is private and we hence cannot - * use here. */ -static char *log_abort_msg = NULL; static thread_local const char *log_prefix = NULL; @@ -950,61 +945,6 @@ int log_object_internal( return r; } -static void log_assert( - int level, - const char *text, - const char *file, - int line, - const char *func, - const char *format) { - - static char buffer[LINE_MAX]; - - if (_likely_(LOG_PRI(level) > log_max_level)) - return; - - DISABLE_WARNING_FORMAT_NONLITERAL; - (void) snprintf(buffer, sizeof buffer, format, text, file, line, func); - REENABLE_WARNING; - - log_abort_msg = buffer; - - log_dispatch_internal(level, 0, file, line, func, NULL, NULL, NULL, NULL, buffer); -} - -_noreturn_ void log_assert_failed( - const char *text, - const char *file, - int line, - const char *func) { - log_assert(LOG_CRIT, text, file, line, func, - "Assertion '%s' failed at %s:%u, function %s(). Aborting."); - abort(); -} - -_noreturn_ void log_assert_failed_unreachable( - const char *file, - int line, - const char *func) { - log_assert(LOG_CRIT, "Code should not be reached", file, line, func, - "%s at %s:%u, function %s(). Aborting. 💥"); - abort(); -} - -void log_assert_failed_return( - const char *text, - const char *file, - int line, - const char *func) { - - if (assert_return_is_critical) - log_assert_failed(text, file, line, func); - - PROTECT_ERRNO; - log_assert(LOG_DEBUG, text, file, line, func, - "Assertion '%s' failed at %s:%u, function %s(), ignoring."); -} - int log_oom_internal(int level, const char *file, int line, const char *func) { return log_internal(level, ENOMEM, file, line, func, "Out of memory."); } @@ -1318,14 +1258,6 @@ static int log_set_ratelimit_kmsg_from_string(const char *e) { return 0; } -void log_set_assert_return_is_critical(bool b) { - assert_return_is_critical = b; -} - -bool log_get_assert_return_is_critical(void) { - return assert_return_is_critical; -} - static int parse_proc_cmdline_item(const char *key, const char *value, void *data) { /* diff --git a/src/basic/log.h b/src/basic/log.h index 34d2a5eb29..9759b28dc0 100644 --- a/src/basic/log.h +++ b/src/basic/log.h @@ -79,9 +79,6 @@ int log_show_tid_from_string(const char *e); * environment should not be called from library code — this is always a job * for the application itself. */ -assert_cc(STRLEN(__FILE__) > STRLEN(RELATIVE_SOURCE_PATH) + 1); -#define PROJECT_FILE (&__FILE__[STRLEN(RELATIVE_SOURCE_PATH) + 1]) - bool stderr_is_journal(void); int log_open(void); void log_close(void); @@ -185,24 +182,6 @@ int log_dump_internal( const char *func, char *buffer); -/* Logging for various assertions */ -_noreturn_ void log_assert_failed( - const char *text, - const char *file, - int line, - const char *func); - -_noreturn_ void log_assert_failed_unreachable( - const char *file, - int line, - const char *func); - -void log_assert_failed_return( - const char *text, - const char *file, - int line, - const char *func); - #define log_dispatch(level, error, buffer) \ log_dispatch_internal(level, error, PROJECT_FILE, __LINE__, __func__, NULL, NULL, NULL, NULL, buffer) @@ -336,9 +315,6 @@ void log_set_open_when_needed(bool b); * stderr, the console or kmsg */ void log_set_prohibit_ipc(bool b); -void log_set_assert_return_is_critical(bool b); -bool log_get_assert_return_is_critical(void) _pure_; - int log_dup_console(void); int log_syntax_internal( diff --git a/src/basic/macro.h b/src/basic/macro.h index 2b3c02c324..b1599633da 100644 --- a/src/basic/macro.h +++ b/src/basic/macro.h @@ -42,6 +42,9 @@ #error "neither int nor long are four bytes long?!?" #endif +assert_cc(STRLEN(__FILE__) > STRLEN(RELATIVE_SOURCE_PATH) + 1); +#define PROJECT_FILE (&__FILE__[STRLEN(RELATIVE_SOURCE_PATH) + 1]) + static inline uint64_t u64_multiply_safe(uint64_t a, uint64_t b) { if (_unlikely_(a != 0 && b > (UINT64_MAX / a))) return 0; /* overflow */ @@ -103,76 +106,6 @@ static inline size_t GREEDY_ALLOC_ROUND_UP(size_t l) { (type*)( (char *)UNIQ_T(A, uniq) - offsetof(type, member) ); \ }) -#ifdef __COVERITY__ - -/* Use special definitions of assertion macros in order to prevent - * false positives of ASSERT_SIDE_EFFECT on Coverity static analyzer - * for uses of assert_se() and assert_return(). - * - * These definitions make expression go through a (trivial) function - * call to ensure they are not discarded. Also use ! or !! to ensure - * the boolean expressions are seen as such. - * - * This technique has been described and recommended in: - * https://community.synopsys.com/s/question/0D534000046Yuzb/suppressing-assertsideeffect-for-functions-that-allow-for-sideeffects - */ - -extern void __coverity_panic__(void); - -static inline void __coverity_check__(int condition) { - if (!condition) - __coverity_panic__(); -} - -static inline int __coverity_check_and_return__(int condition) { - return condition; -} - -#define assert_message_se(expr, message) __coverity_check__(!!(expr)) - -#define assert_log(expr, message) __coverity_check_and_return__(!!(expr)) - -#else /* ! __COVERITY__ */ - -#define assert_message_se(expr, message) \ - do { \ - if (_unlikely_(!(expr))) \ - log_assert_failed(message, PROJECT_FILE, __LINE__, __func__); \ - } while (false) - -#define assert_log(expr, message) ((_likely_(expr)) \ - ? (true) \ - : (log_assert_failed_return(message, PROJECT_FILE, __LINE__, __func__), false)) - -#endif /* __COVERITY__ */ - -#define assert_se(expr) assert_message_se(expr, #expr) - -/* We override the glibc assert() here. */ -#undef assert -#ifdef NDEBUG -#define assert(expr) ({ if (!(expr)) __builtin_unreachable(); }) -#else -#define assert(expr) assert_message_se(expr, #expr) -#endif - -#define assert_not_reached() \ - log_assert_failed_unreachable(PROJECT_FILE, __LINE__, __func__) - -#define assert_return(expr, r) \ - do { \ - if (!assert_log(expr, #expr)) \ - return (r); \ - } while (false) - -#define assert_return_errno(expr, r, err) \ - do { \ - if (!assert_log(expr, #expr)) { \ - errno = err; \ - return (r); \ - } \ - } while (false) - #define return_with_errno(r, err) \ do { \ errno = abs(err); \ diff --git a/src/basic/meson.build b/src/basic/meson.build index c3ca1537b5..9db77a95a6 100644 --- a/src/basic/meson.build +++ b/src/basic/meson.build @@ -7,6 +7,7 @@ basic_sources = files( 'architecture.c', 'argv-util.c', 'arphrd-util.c', + 'assert-util.c', 'audit-util.c', 'btrfs.c', 'build.c', diff --git a/src/basic/signal-util.h b/src/basic/signal-util.h index dc2b9de147..d64d503124 100644 --- a/src/basic/signal-util.h +++ b/src/basic/signal-util.h @@ -3,6 +3,7 @@ #include +#include "assert-util.h" #include "macro.h" int reset_all_signal_handlers(void); diff --git a/src/basic/stdio-util.h b/src/basic/stdio-util.h index 0a2239d022..bd5871821c 100644 --- a/src/basic/stdio-util.h +++ b/src/basic/stdio-util.h @@ -6,6 +6,7 @@ #include #include +#include "assert-util.h" #include "macro.h" _printf_(3, 4) diff --git a/src/boot/bcd.c b/src/boot/bcd.c index 4533d479c1..9b5596b23a 100644 --- a/src/boot/bcd.c +++ b/src/boot/bcd.c @@ -2,6 +2,7 @@ #include +#include "assert-fundamental.h" #include "bcd.h" #include "efi-string.h" diff --git a/src/fundamental/assert-fundamental.h b/src/fundamental/assert-fundamental.h new file mode 100644 index 0000000000..292656aa6b --- /dev/null +++ b/src/fundamental/assert-fundamental.h @@ -0,0 +1,45 @@ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ +#pragma once + +#if !SD_BOOT +# include +#endif + +#include "macro-fundamental.h" + +#if SD_BOOT + _noreturn_ void efi_assert(const char *expr, const char *file, unsigned line, const char *function); + + #ifdef NDEBUG + #define assert(expr) ({ if (!(expr)) __builtin_unreachable(); }) + #define assert_not_reached() __builtin_unreachable() + #else + #define assert(expr) ({ _likely_(expr) ? VOID_0 : efi_assert(#expr, __FILE__, __LINE__, __func__); }) + #define assert_not_reached() efi_assert("Code should not be reached", __FILE__, __LINE__, __func__) + #endif + #define assert_se(expr) ({ _likely_(expr) ? VOID_0 : efi_assert(#expr, __FILE__, __LINE__, __func__); }) +#endif + +/* This passes the argument through after (if asserts are enabled) checking that it is not null. */ +#define ASSERT_PTR(expr) _ASSERT_PTR(expr, UNIQ_T(_expr_, UNIQ), assert) +#define ASSERT_SE_PTR(expr) _ASSERT_PTR(expr, UNIQ_T(_expr_, UNIQ), assert_se) +#define _ASSERT_PTR(expr, var, check) \ + ({ \ + typeof(expr) var = (expr); \ + check(var); \ + var; \ + }) + +#define ASSERT_NONNEG(expr) \ + ({ \ + typeof(expr) _expr_ = (expr), _zero = 0; \ + assert(_expr_ >= _zero); \ + _expr_; \ + }) + +#define ASSERT_SE_NONNEG(expr) \ + ({ \ + typeof(expr) _expr_ = (expr), _zero = 0; \ + assert_se(_expr_ >= _zero); \ + _expr_; \ + }) diff --git a/src/fundamental/iovec-util-fundamental.h b/src/fundamental/iovec-util-fundamental.h index edd95fa4e9..4214afea9a 100644 --- a/src/fundamental/iovec-util-fundamental.h +++ b/src/fundamental/iovec-util-fundamental.h @@ -1,6 +1,8 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once +#include "assert-fundamental.h" + #if SD_BOOT /* struct iovec is a POSIX userspace construct. Let's introduce it also in EFI mode, it's just so useful */ struct iovec { diff --git a/src/fundamental/macro-fundamental.h b/src/fundamental/macro-fundamental.h index ac18326a43..585bacaf82 100644 --- a/src/fundamental/macro-fundamental.h +++ b/src/fundamental/macro-fundamental.h @@ -145,43 +145,9 @@ #define CONCATENATE(x, y) XCONCATENATE(x, y) #if SD_BOOT - _noreturn_ void efi_assert(const char *expr, const char *file, unsigned line, const char *function); - - #ifdef NDEBUG - #define assert(expr) ({ if (!(expr)) __builtin_unreachable(); }) - #define assert_not_reached() __builtin_unreachable() - #else - #define assert(expr) ({ _likely_(expr) ? VOID_0 : efi_assert(#expr, __FILE__, __LINE__, __func__); }) - #define assert_not_reached() efi_assert("Code should not be reached", __FILE__, __LINE__, __func__) - #endif #define static_assert _Static_assert - #define assert_se(expr) ({ _likely_(expr) ? VOID_0 : efi_assert(#expr, __FILE__, __LINE__, __func__); }) #endif -/* This passes the argument through after (if asserts are enabled) checking that it is not null. */ -#define ASSERT_PTR(expr) _ASSERT_PTR(expr, UNIQ_T(_expr_, UNIQ), assert) -#define ASSERT_SE_PTR(expr) _ASSERT_PTR(expr, UNIQ_T(_expr_, UNIQ), assert_se) -#define _ASSERT_PTR(expr, var, check) \ - ({ \ - typeof(expr) var = (expr); \ - check(var); \ - var; \ - }) - -#define ASSERT_NONNEG(expr) \ - ({ \ - typeof(expr) _expr_ = (expr), _zero = 0; \ - assert(_expr_ >= _zero); \ - _expr_; \ - }) - -#define ASSERT_SE_NONNEG(expr) \ - ({ \ - typeof(expr) _expr_ = (expr), _zero = 0; \ - assert_se(_expr_ >= _zero); \ - _expr_; \ - }) - #define assert_cc(expr) static_assert(expr, #expr) #define UNIQ_T(x, uniq) CONCATENATE(__unique_prefix_, CONCATENATE(x, uniq)) diff --git a/src/fundamental/memory-util-fundamental.h b/src/fundamental/memory-util-fundamental.h index f42d54f97a..4b50714f5e 100644 --- a/src/fundamental/memory-util-fundamental.h +++ b/src/fundamental/memory-util-fundamental.h @@ -9,6 +9,7 @@ # include #endif +#include "assert-fundamental.h" #include "macro-fundamental.h" #define memzero(x, l) \ diff --git a/src/fundamental/sha256-fundamental.c b/src/fundamental/sha256-fundamental.c index 03381835d6..9f8b0106fe 100644 --- a/src/fundamental/sha256-fundamental.c +++ b/src/fundamental/sha256-fundamental.c @@ -21,6 +21,7 @@ License along with the GNU C Library; if not, see . */ +#include "assert-fundamental.h" #include "macro-fundamental.h" #include "memory-util-fundamental.h" #include "sha256-fundamental.h" diff --git a/src/fundamental/string-util-fundamental.h b/src/fundamental/string-util-fundamental.h index ec3ad48706..a9638b4d0e 100644 --- a/src/fundamental/string-util-fundamental.h +++ b/src/fundamental/string-util-fundamental.h @@ -8,6 +8,7 @@ # include #endif +#include "assert-fundamental.h" #include "macro-fundamental.h" #if SD_BOOT diff --git a/src/fuzz/fuzz.h b/src/fuzz/fuzz.h index 123e88e8e9..6961fce7c1 100644 --- a/src/fuzz/fuzz.h +++ b/src/fuzz/fuzz.h @@ -4,6 +4,7 @@ #include #include +#include "assert-util.h" #include "env-util.h" #include "fileio.h" diff --git a/src/shared/fstab-util.h b/src/shared/fstab-util.h index 3fc1440e19..8dd4270025 100644 --- a/src/shared/fstab-util.h +++ b/src/shared/fstab-util.h @@ -4,6 +4,7 @@ #include #include +#include "assert-util.h" #include "macro.h" bool fstab_enabled_full(int enabled); diff --git a/src/shared/osc-context.h b/src/shared/osc-context.h index 20c70b7183..6c9882c894 100644 --- a/src/shared/osc-context.h +++ b/src/shared/osc-context.h @@ -3,6 +3,7 @@ #include "sd-id128.h" +#include "assert-util.h" #include "macro.h" int osc_context_open_boot(char **ret_seq); diff --git a/src/shared/pretty-print.h b/src/shared/pretty-print.h index fbfccb0a2e..16966c3ab8 100644 --- a/src/shared/pretty-print.h +++ b/src/shared/pretty-print.h @@ -2,6 +2,7 @@ #pragma once #include "ansi-color.h" +#include "assert-util.h" #include "glyph-util.h" #include "terminal-util.h" diff --git a/src/sysupdate/sysupdate-update-set-flags.c b/src/sysupdate/sysupdate-update-set-flags.c index e12c34a436..ffed02d1f1 100644 --- a/src/sysupdate/sysupdate-update-set-flags.c +++ b/src/sysupdate/sysupdate-update-set-flags.c @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #include "ansi-color.h" +#include "assert-util.h" #include "glyph-util.h" #include "sysupdate-update-set-flags.h" #include "terminal-util.h" diff --git a/src/test/test-dlopen.c b/src/test/test-dlopen.c index 6704e936e7..fd5bc32d5b 100644 --- a/src/test/test-dlopen.c +++ b/src/test/test-dlopen.c @@ -3,6 +3,7 @@ #include #include +#include "assert-util.h" #include "macro.h" int main(int argc, char **argv) { diff --git a/src/test/test-sizeof.c b/src/test/test-sizeof.c index ea0c58770e..4e87f4ab74 100644 --- a/src/test/test-sizeof.c +++ b/src/test/test-sizeof.c @@ -11,6 +11,7 @@ #define __STDC_WANT_IEC_60559_TYPES_EXT__ #include +#include "assert-util.h" #include "time-util.h" /* Print information about various types. Useful when diagnosing diff --git a/src/udev/udevadm-hwdb.c b/src/udev/udevadm-hwdb.c index f306a4ffd6..f4c3072b2e 100644 --- a/src/udev/udevadm-hwdb.c +++ b/src/udev/udevadm-hwdb.c @@ -2,6 +2,7 @@ #include +#include "assert-util.h" #include "hwdb-util.h" #include "udevadm.h" From c68eb22064f7ac889f2bf94347187bf945c50a1d Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Fri, 18 Apr 2025 11:50:18 +0200 Subject: [PATCH 09/15] fundamental: Always use _Static_assert for assert_cc() Let's get rid of the assert.h include in macro-fundamental.h by always using the builtin. Behavior is unchanged. --- src/fundamental/macro-fundamental.h | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/fundamental/macro-fundamental.h b/src/fundamental/macro-fundamental.h index 585bacaf82..cab8368c87 100644 --- a/src/fundamental/macro-fundamental.h +++ b/src/fundamental/macro-fundamental.h @@ -1,16 +1,19 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once -#if !SD_BOOT -# include -#endif - #include #include #include #include #include +/* This header unconditionally defines MAX() so include it here already so + * it won't override our own definition of MAX() that we define later in this + * file. */ +#if !SD_BOOT +#include +#endif + /* Temporarily disable some warnings */ #define DISABLE_WARNING_DEPRECATED_DECLARATIONS \ _Pragma("GCC diagnostic push"); \ @@ -144,11 +147,7 @@ #define XCONCATENATE(x, y) x ## y #define CONCATENATE(x, y) XCONCATENATE(x, y) -#if SD_BOOT - #define static_assert _Static_assert -#endif - -#define assert_cc(expr) static_assert(expr, #expr) +#define assert_cc(expr) _Static_assert(expr, #expr) #define UNIQ_T(x, uniq) CONCATENATE(__unique_prefix_, CONCATENATE(x, uniq)) #define UNIQ __COUNTER__ From 93a1f7921a6fa6b2ed5e96d686e4510dda27da9b Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Sat, 12 Apr 2025 16:47:29 +0200 Subject: [PATCH 10/15] basic: Stop including log.h in macro.h Now that the necessary functions from log.h have been moved to macro.h, we can stop including log.h in macro.h. This requires modifying source files all over the tree to include log.h instead. --- src/ac-power/ac-power.c | 1 + src/analyze/analyze-compare-versions.c | 1 + src/basic/argv-util.c | 1 + src/basic/build.c | 1 + src/basic/cap-list.c | 1 + src/basic/chattr-util.c | 1 + src/basic/compress.c | 1 + src/basic/confidential-virt.c | 1 + src/basic/dlfcn-util.c | 1 + src/basic/efivars.c | 1 + src/basic/env-file.c | 1 + src/basic/env-util.c | 1 + src/basic/ether-addr-util.c | 1 + src/basic/fd-util.c | 1 + src/basic/format-ifname.c | 1 + src/basic/gcrypt-util.c | 1 + src/basic/glob-util.c | 1 + src/basic/hashmap.c | 1 + src/basic/hostname-util.c | 1 + src/basic/initrd-util.c | 1 + src/basic/keyring-util.c | 1 + src/basic/limits-util.c | 1 + src/basic/locale-util.c | 1 + src/basic/lock-util.c | 1 + src/basic/macro.h | 2 -- src/basic/memfd-util.c | 1 + src/basic/mempool.c | 1 + src/basic/mkdir.c | 1 + src/basic/mountpoint-util.c | 1 + src/basic/namespace-util.c | 1 + src/basic/os-util.c | 1 + src/basic/parse-util.c | 1 + src/basic/pidfd-util.c | 1 + src/basic/pidref.c | 1 + src/basic/procfs-util.c | 1 + src/basic/random-util.c | 1 + src/basic/recurse-dir.c | 1 + src/basic/rlimit-util.c | 1 + src/basic/sigbus.c | 1 + src/basic/stat-util.c | 1 + src/basic/string-util.c | 10 ++++++++++ src/basic/string-util.h | 9 +-------- src/basic/strv.c | 1 + src/basic/sync-util.c | 1 + src/basic/tmpfile-util.c | 1 + src/basic/uid-classification.c | 1 + src/basic/uid-range.c | 1 + src/basic/unit-name.c | 1 + src/basic/user-util.c | 1 + src/basic/virt.c | 1 + src/bootctl/bootctl-reboot-to-firmware.c | 1 + src/busctl/busctl-introspect.c | 1 + src/cgtop/cgtop.c | 1 + src/core/clock-warp.c | 1 + src/core/efi-random.c | 1 + src/core/ipe-setup.c | 1 + src/core/kmod-setup.c | 1 + src/core/show-status.c | 1 + src/coredump/coredump-vacuum.c | 1 + src/creds/creds.c | 1 + src/cryptenroll/cryptenroll-list.c | 1 + src/cryptenroll/cryptenroll-password.c | 1 + src/cryptenroll/cryptenroll-recovery.c | 1 + src/cryptenroll/cryptenroll-wipe.c | 1 + src/cryptsetup/cryptsetup-keyfile.c | 1 + src/detect-virt/detect-virt.c | 1 + src/factory-reset/factory-reset-generator.c | 1 + src/fuzz/fuzz.h | 1 + src/home/homectl-fido2.c | 1 + src/home/homectl-pkcs11.c | 1 + src/home/homectl-pkcs11.h | 2 ++ src/home/homectl-recovery-key.c | 1 + src/home/homed-home-bus.c | 1 + src/home/homed-home.c | 1 + src/home/homed-manager-bus.c | 1 + src/home/homed-operation.c | 1 + src/home/homed-varlink.c | 1 + src/home/homework-blob.c | 1 + src/home/homework-fido2.c | 1 + src/home/homework-password-cache.c | 1 + src/home/homework-pkcs11.c | 1 + src/home/homework-quota.c | 1 + src/home/pam_systemd_home.c | 1 + src/home/user-record-password-quality.c | 1 + src/home/user-record-sign.c | 1 + src/home/user-record-util.c | 1 + src/hostname/hostnamectl.c | 1 + src/hostname/hostnamed.c | 1 + src/hwdb/hwdb.c | 1 + src/id128/id128.c | 1 + src/import/curl-util.c | 1 + src/import/export-raw.c | 1 + src/import/export-tar.c | 1 + src/import/import-common.c | 1 + src/import/import-compress.c | 1 + src/import/import-raw.c | 1 + src/import/import-tar.c | 1 + src/import/pull-job.c | 1 + src/import/pull-raw.c | 1 + src/import/pull-tar.c | 1 + src/integritysetup/integrity-util.c | 1 + src/journal-remote/journal-remote-parse.c | 1 + src/journal-remote/journal-remote-write.c | 1 + src/journal-remote/journal-remote.c | 1 + src/journal/cat.c | 1 + src/journal/journalctl-authenticate.c | 1 + src/journal/journalctl-catalog.c | 1 + src/journal/journalctl-filter.c | 1 + src/journal/journalctl-misc.c | 1 + src/journal/journalctl-show.c | 1 + src/journal/journalctl-util.c | 1 + src/journal/journalctl-varlink.c | 1 + src/journal/journald-rate-limit.c | 1 + src/keyutil/keyutil.c | 1 + src/libsystemd-network/dhcp-network.c | 1 + src/libsystemd-network/dhcp-packet.c | 1 + src/libsystemd-network/sd-dhcp-client-id.c | 1 + src/libsystemd-network/sd-dns-resolver.c | 1 + src/libsystemd-network/test-acd.c | 1 + src/libsystemd-network/test-dhcp-client.c | 1 + src/libsystemd-network/test-dhcp-option.c | 1 + src/libsystemd-network/test-ipv4ll-manual.c | 1 + src/libsystemd-network/test-ipv4ll.c | 1 + src/libsystemd-network/test-lldp-rx.c | 1 + src/libsystemd-network/test-sd-dhcp-lease.c | 1 + src/libsystemd/sd-bus/bus-container.c | 1 + src/libsystemd/sd-bus/bus-control.c | 1 + src/libsystemd/sd-bus/bus-convenience.c | 1 + src/libsystemd/sd-bus/bus-dump.c | 1 + src/libsystemd/sd-bus/bus-error.c | 1 + src/libsystemd/sd-bus/bus-internal.c | 1 + src/libsystemd/sd-bus/bus-introspect.c | 1 + src/libsystemd/sd-bus/bus-kernel.c | 1 + src/libsystemd/sd-bus/bus-match.c | 1 + src/libsystemd/sd-bus/bus-message.c | 1 + src/libsystemd/sd-bus/bus-objects.c | 1 + src/libsystemd/sd-bus/bus-slot.c | 1 + src/libsystemd/sd-bus/bus-socket.c | 1 + src/libsystemd/sd-bus/bus-track.c | 1 + src/libsystemd/sd-bus/bus-type.c | 1 + src/libsystemd/sd-bus/sd-bus.c | 1 + src/libsystemd/sd-bus/test-bus-vtable.c | 1 + src/libsystemd/sd-daemon/sd-daemon.c | 1 + src/libsystemd/sd-hwdb/sd-hwdb.c | 1 + src/libsystemd/sd-id128/id128-util.c | 1 + src/libsystemd/sd-id128/sd-id128.c | 1 + src/libsystemd/sd-journal/journal-authenticate.c | 1 + src/libsystemd/sd-journal/journal-file.c | 1 + src/libsystemd/sd-journal/journal-send.c | 1 + src/libsystemd/sd-journal/journal-vacuum.c | 1 + src/libsystemd/sd-journal/journal-verify.c | 1 + src/libsystemd/sd-json/json-util.c | 1 + src/libsystemd/sd-json/json-util.h | 1 + src/libsystemd/sd-json/sd-json.c | 1 + src/libsystemd/sd-login/sd-login.c | 1 + src/libsystemd/sd-netlink/netlink-genl.c | 1 + src/libsystemd/sd-netlink/netlink-message-nfnl.c | 1 + src/libsystemd/sd-netlink/netlink-message-rtnl.c | 1 + src/libsystemd/sd-netlink/netlink-message.c | 1 + src/libsystemd/sd-netlink/netlink-slot.c | 1 + src/libsystemd/sd-netlink/netlink-socket.c | 1 + src/libsystemd/sd-netlink/netlink-util.c | 12 ++++++++++++ src/libsystemd/sd-netlink/netlink-util.h | 11 +---------- src/libsystemd/sd-netlink/sd-netlink.c | 1 + src/libsystemd/sd-path/sd-path.c | 1 + src/libsystemd/sd-resolve/sd-resolve.c | 1 + src/libsystemd/sd-varlink/sd-varlink-idl.c | 1 + src/libsystemd/sd-varlink/sd-varlink.c | 1 + src/libsystemd/sd-varlink/varlink-util.c | 1 + src/libudev/libudev-hwdb.c | 1 + src/libudev/libudev.c | 1 + src/locale/localed-util.c | 1 + src/locale/localed-util.h | 2 +- src/locale/localed.c | 1 + src/login/inhibit.c | 1 + src/login/pam_systemd_loadkey.c | 1 + src/measure/measure.c | 1 + src/mountfsd/mountfsd-manager.c | 1 + src/network/networkctl-address-label.c | 1 + src/network/networkctl-config-file.c | 1 + src/network/networkctl-description.c | 1 + src/network/networkctl-dump-util.c | 1 + src/network/networkctl-journal.c | 1 + src/network/networkctl-lldp.c | 1 + src/network/networkctl-misc.c | 1 + src/network/networkctl-status-system.c | 1 + src/network/networkctl-util.c | 1 + src/network/networkctl.c | 1 + src/network/wait-online/wait-online.c | 1 + src/nspawn/nspawn-bind-user.c | 1 + src/nspawn/nspawn-setuid.c | 1 + src/nsresourced/nsresourced-manager.c | 1 + src/nsresourced/test-userns-restrict.c | 1 + src/nsresourced/userns-restrict.c | 1 + src/oom/oomctl.c | 1 + src/oom/oomd-util.c | 1 + src/pcrlock/pcrlock-firmware.c | 1 + src/portable/portabled-operation.c | 1 + src/ptyfwd/ptyfwd-tool.c | 1 + src/resolve/resolvconf-compat.c | 1 + src/resolve/resolved-dns-answer.c | 1 + src/resolve/resolved-dns-dnssec.c | 1 + src/resolve/resolved-dns-packet.c | 1 + src/resolve/resolved-dns-question.c | 1 + src/resolve/resolved-dns-rr.c | 1 + src/resolve/resolved-dns-trust-anchor.c | 1 + src/resolve/resolved-util.c | 1 + src/run/run.c | 1 + src/shared/acl-util.c | 1 + src/shared/apparmor-util.c | 1 + src/shared/binfmt-util.c | 1 + src/shared/boot-entry.c | 1 + src/shared/bootspec.c | 1 + src/shared/btrfs-util.c | 7 +++++++ src/shared/btrfs-util.h | 6 +----- src/shared/bus-get-properties.c | 1 + src/shared/bus-map-properties.c | 9 +++++---- src/shared/bus-object.c | 1 + src/shared/bus-polkit.c | 1 + src/shared/bus-print-properties.c | 1 + src/shared/bus-unit-procs.c | 1 + src/shared/bus-util.c | 1 + src/shared/bus-util.h | 1 + src/shared/bus-wait-for-jobs.c | 1 + src/shared/bus-wait-for-units.c | 1 + src/shared/calendarspec.c | 1 + src/shared/cgroup-setup.c | 1 + src/shared/cgroup-show.c | 1 + src/shared/common-signal.c | 1 + src/shared/copy.c | 1 + src/shared/coredump-util.c | 1 + src/shared/creds-util.c | 1 + src/shared/dns-domain.c | 1 + src/shared/edit-util.c | 1 + src/shared/efi-api.c | 1 + src/shared/efi-loader.c | 1 + src/shared/efi-loader.h | 1 + src/shared/elf-util.c | 1 + src/shared/elf-util.h | 1 + src/shared/fido2-util.c | 1 + src/shared/format-table.c | 1 + src/shared/fstab-util.h | 1 + src/shared/group-record.c | 1 + src/shared/hwdb-util.c | 1 + src/shared/idn-util.c | 1 + src/shared/install-file.c | 1 + src/shared/journal-file-util.c | 1 + src/shared/journal-importer.c | 1 + src/shared/kernel-image.c | 1 + src/shared/killall.c | 1 + src/shared/libarchive-util.c | 1 + src/shared/libfido2-util.c | 2 +- src/shared/libmount-util.c | 1 + src/shared/local-addresses.c | 1 + src/shared/loopback-setup.c | 1 + src/shared/lsm-util.c | 1 + src/shared/machine-credential.c | 1 + src/shared/machine-pool.c | 1 + src/shared/notify-recv.c | 1 + src/shared/nsflags.c | 1 + src/shared/nsresource.c | 1 + src/shared/numa-util.c | 1 + src/shared/openssl-util.c | 1 + src/shared/pam-util.c | 1 + src/shared/parse-argument.c | 1 + src/shared/pcrextend-util.c | 1 + src/shared/pkcs11-util.c | 1 + src/shared/pkcs11-util.h | 1 + src/shared/plymouth-util.c | 1 + src/shared/portable-util.c | 1 + src/shared/pretty-print.c | 1 + src/shared/resize-fs.c | 1 + src/shared/seccomp-util.c | 1 + src/shared/service-util.c | 1 + src/shared/shift-uid.c | 1 + src/shared/tests.h | 1 + src/shared/unit-file.c | 1 + src/shared/user-record-nss.c | 1 + src/shared/user-record-show.c | 1 + src/shared/user-record.c | 1 + src/shared/userdb-dropin.c | 1 + src/shared/userdb.c | 1 + src/shared/utmp-wtmp.c | 1 + src/shared/varlink-io.systemd.service.c | 1 + src/shared/varlink-serialize.c | 1 + src/shared/vconsole-util.c | 1 + src/shared/vpick.c | 1 + src/shared/xml.c | 1 + src/shutdown/detach-swap.c | 1 + src/sysupdate/sysupdate-instance.c | 1 + src/sysupdate/sysupdate-partition.c | 1 + src/sysupdate/sysupdate-pattern.c | 1 + src/sysupdate/sysupdate-util.c | 1 + src/test/nss-test-util.c | 1 + src/test/test-sizeof.c | 1 + src/timedate/timedatectl.c | 1 + src/timedate/timedated.c | 1 + src/timesync/timesyncd-server.c | 1 + src/tmpfiles/offline-passwd.c | 1 + src/tpm2-setup/tpm2-setup.c | 1 + src/udev/fido_id/test-fido-id-desc.c | 1 + src/udev/mtd_probe/mtd_probe.c | 1 + src/udev/mtd_probe/probe_smartmedia.c | 1 + src/udev/scsi_id/scsi_serial.c | 1 + src/udev/test-udev-builtin.c | 1 + src/udev/test-udev-format.c | 1 + src/udev/test-udev-node.c | 1 + src/udev/udev-ctrl.c | 1 + src/udev/udev-manager-ctrl.c | 1 + src/udev/udev-varlink.c | 1 + src/udev/udevadm-control.c | 1 + src/udev/udevadm-hwdb.c | 1 + src/udev/udevadm-test.c | 1 + src/udev/udevadm-util.c | 1 + src/udev/udevd.c | 1 + src/udev/v4l_id/v4l_id.c | 1 + src/update-done/update-done.c | 1 + src/userdb/userdbctl.c | 1 + src/userdb/userdbd-manager.c | 1 + src/varlinkctl/varlinkctl.c | 1 + src/vmspawn/vmspawn-register.c | 1 + src/vmspawn/vmspawn-scope.c | 1 + src/vpick/vpick-tool.c | 1 + .../xdg-autostart-condition.c | 1 + 324 files changed, 354 insertions(+), 31 deletions(-) diff --git a/src/ac-power/ac-power.c b/src/ac-power/ac-power.c index abbf65cc29..6bb3eb1016 100644 --- a/src/ac-power/ac-power.c +++ b/src/ac-power/ac-power.c @@ -5,6 +5,7 @@ #include "ansi-color.h" #include "battery-util.h" #include "build.h" +#include "log.h" #include "main-func.h" #include "pretty-print.h" diff --git a/src/analyze/analyze-compare-versions.c b/src/analyze/analyze-compare-versions.c index 94cff1853e..b5f5cea6d7 100644 --- a/src/analyze/analyze-compare-versions.c +++ b/src/analyze/analyze-compare-versions.c @@ -4,6 +4,7 @@ #include "analyze-compare-versions.h" #include "compare-operator.h" +#include "log.h" #include "macro.h" #include "string-util.h" #include "strv.h" diff --git a/src/basic/argv-util.c b/src/basic/argv-util.c index a2bcc44678..71be53a1bf 100644 --- a/src/basic/argv-util.c +++ b/src/basic/argv-util.c @@ -8,6 +8,7 @@ #include "argv-util.h" #include "capability-util.h" #include "errno-util.h" +#include "log.h" #include "missing_sched.h" #include "parse-util.h" #include "path-util.h" diff --git a/src/basic/build.c b/src/basic/build.c index ca3f02c87d..946de943f0 100644 --- a/src/basic/build.c +++ b/src/basic/build.c @@ -6,6 +6,7 @@ #include "ansi-color.h" #include "build.h" #include "extract-word.h" +#include "log.h" #include "macro.h" #include "string-util.h" #include "terminal-util.h" diff --git a/src/basic/cap-list.c b/src/basic/cap-list.c index 2df2887446..258e719143 100644 --- a/src/basic/cap-list.c +++ b/src/basic/cap-list.c @@ -8,6 +8,7 @@ #include "capability-util.h" #include "cap-list.h" #include "extract-word.h" +#include "log.h" #include "macro.h" #include "parse-util.h" #include "stdio-util.h" diff --git a/src/basic/chattr-util.c b/src/basic/chattr-util.c index 2f3457daa9..794ac6572f 100644 --- a/src/basic/chattr-util.c +++ b/src/basic/chattr-util.c @@ -10,6 +10,7 @@ #include "errno-util.h" #include "fd-util.h" #include "fs-util.h" +#include "log.h" #include "macro.h" #include "string-util.h" diff --git a/src/basic/compress.c b/src/basic/compress.c index 1d16f86038..97c1e03fbf 100644 --- a/src/basic/compress.c +++ b/src/basic/compress.c @@ -27,6 +27,7 @@ #include "fd-util.h" #include "fileio.h" #include "io-util.h" +#include "log.h" #include "macro.h" #include "sparse-endian.h" #include "string-table.h" diff --git a/src/basic/confidential-virt.c b/src/basic/confidential-virt.c index ebb50e311d..f882f44540 100644 --- a/src/basic/confidential-virt.c +++ b/src/basic/confidential-virt.c @@ -14,6 +14,7 @@ #include "errno-util.h" #include "fd-util.h" #include "fileio.h" +#include "log.h" #include "string-table.h" #include "utf8.h" diff --git a/src/basic/dlfcn-util.c b/src/basic/dlfcn-util.c index 2ebb1463c2..b629b18d11 100644 --- a/src/basic/dlfcn-util.c +++ b/src/basic/dlfcn-util.c @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #include "dlfcn-util.h" +#include "log.h" static int dlsym_many_or_warnv(void *dl, int log_level, va_list ap) { void (**fn)(void); diff --git a/src/basic/efivars.c b/src/basic/efivars.c index 00169ae5a3..6fa0da576f 100644 --- a/src/basic/efivars.c +++ b/src/basic/efivars.c @@ -15,6 +15,7 @@ #include "fd-util.h" #include "fileio.h" #include "io-util.h" +#include "log.h" #include "macro.h" #include "memory-util.h" #include "missing_fs.h" diff --git a/src/basic/env-file.c b/src/basic/env-file.c index 2fff98f8fb..b0faeab4cc 100644 --- a/src/basic/env-file.c +++ b/src/basic/env-file.c @@ -7,6 +7,7 @@ #include "fd-util.h" #include "fileio.h" #include "fs-util.h" +#include "log.h" #include "string-util.h" #include "strv.h" #include "tmpfile-util.h" diff --git a/src/basic/env-util.c b/src/basic/env-util.c index d113235132..dc3cc32eb0 100644 --- a/src/basic/env-util.c +++ b/src/basic/env-util.c @@ -11,6 +11,7 @@ #include "errno-util.h" #include "escape.h" #include "extract-word.h" +#include "log.h" #include "macro.h" #include "parse-util.h" #include "path-util.h" diff --git a/src/basic/ether-addr-util.c b/src/basic/ether-addr-util.c index 11336572cd..024f7310f8 100644 --- a/src/basic/ether-addr-util.c +++ b/src/basic/ether-addr-util.c @@ -8,6 +8,7 @@ #include "ether-addr-util.h" #include "hexdecoct.h" +#include "log.h" #include "macro.h" #include "string-util.h" diff --git a/src/basic/fd-util.c b/src/basic/fd-util.c index 5f17ed1792..890f608dec 100644 --- a/src/basic/fd-util.c +++ b/src/basic/fd-util.c @@ -15,6 +15,7 @@ #include "fileio.h" #include "fs-util.h" #include "io-util.h" +#include "log.h" #include "macro.h" #include "missing_fcntl.h" #include "missing_fs.h" diff --git a/src/basic/format-ifname.c b/src/basic/format-ifname.c index 9d3952f27e..8331d20288 100644 --- a/src/basic/format-ifname.c +++ b/src/basic/format-ifname.c @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #include "format-ifname.h" +#include "log.h" #include "stdio-util.h" #include "string-util.h" diff --git a/src/basic/gcrypt-util.c b/src/basic/gcrypt-util.c index 72b3bdd6ef..6d237532ee 100644 --- a/src/basic/gcrypt-util.c +++ b/src/basic/gcrypt-util.c @@ -4,6 +4,7 @@ #include "gcrypt-util.h" #include "hexdecoct.h" +#include "log.h" static void *gcrypt_dl = NULL; diff --git a/src/basic/glob-util.c b/src/basic/glob-util.c index 802ca8c655..cabb382106 100644 --- a/src/basic/glob-util.c +++ b/src/basic/glob-util.c @@ -8,6 +8,7 @@ #include "dirent-util.h" #include "errno-util.h" #include "glob-util.h" +#include "log.h" #include "macro.h" #include "path-util.h" #include "strv.h" diff --git a/src/basic/hashmap.c b/src/basic/hashmap.c index a547b8c31c..8832d5c3c7 100644 --- a/src/basic/hashmap.c +++ b/src/basic/hashmap.c @@ -12,6 +12,7 @@ #include "alloc-util.h" #include "fileio.h" #include "hashmap.h" +#include "log.h" #include "logarithm.h" #include "macro.h" #include "memory-util.h" diff --git a/src/basic/hostname-util.c b/src/basic/hostname-util.c index 7159473b58..5507303055 100644 --- a/src/basic/hostname-util.c +++ b/src/basic/hostname-util.c @@ -10,6 +10,7 @@ #include "alloc-util.h" #include "env-file.h" #include "hostname-util.h" +#include "log.h" #include "os-util.h" #include "string-util.h" #include "strv.h" diff --git a/src/basic/initrd-util.c b/src/basic/initrd-util.c index d3aa933977..2478b0cc29 100644 --- a/src/basic/initrd-util.c +++ b/src/basic/initrd-util.c @@ -5,6 +5,7 @@ #include "env-util.h" #include "errno-util.h" #include "initrd-util.h" +#include "log.h" #include "parse-util.h" #include "stat-util.h" #include "string-util.h" diff --git a/src/basic/keyring-util.c b/src/basic/keyring-util.c index c32bd50b6f..9f39161c14 100644 --- a/src/basic/keyring-util.c +++ b/src/basic/keyring-util.c @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #include "keyring-util.h" +#include "log.h" #include "memory-util.h" #include "missing_syscall.h" diff --git a/src/basic/limits-util.c b/src/basic/limits-util.c index 9597c4c41c..5deaf9dda7 100644 --- a/src/basic/limits-util.c +++ b/src/basic/limits-util.c @@ -5,6 +5,7 @@ #include "alloc-util.h" #include "cgroup-util.h" #include "limits-util.h" +#include "log.h" #include "memory-util.h" #include "parse-util.h" #include "process-util.h" diff --git a/src/basic/locale-util.c b/src/basic/locale-util.c index 2fbab01aeb..9121ce01f6 100644 --- a/src/basic/locale-util.c +++ b/src/basic/locale-util.c @@ -17,6 +17,7 @@ #include "fileio.h" #include "hashmap.h" #include "locale-util.h" +#include "log.h" #include "path-util.h" #include "process-util.h" #include "set.h" diff --git a/src/basic/lock-util.c b/src/basic/lock-util.c index 7dad009c1e..ea0dcf720e 100644 --- a/src/basic/lock-util.c +++ b/src/basic/lock-util.c @@ -13,6 +13,7 @@ #include "fd-util.h" #include "fs-util.h" #include "lock-util.h" +#include "log.h" #include "macro.h" #include "missing_fcntl.h" #include "path-util.h" diff --git a/src/basic/macro.h b/src/basic/macro.h index b1599633da..a022e60e17 100644 --- a/src/basic/macro.h +++ b/src/basic/macro.h @@ -232,5 +232,3 @@ static inline size_t size_add(size_t x, size_t y) { for (typeof(entry) _va_sentinel_[1] = {}, _entries_[] = { __VA_ARGS__ __VA_OPT__(,) _va_sentinel_[0] }, *_current_ = _entries_; \ ((long)(_current_ - _entries_) < (long)(ELEMENTSOF(_entries_) - 1)) && ({ entry = *_current_; true; }); \ _current_++) - -#include "log.h" diff --git a/src/basic/memfd-util.c b/src/basic/memfd-util.c index f2ddd4dd96..f19d39470d 100644 --- a/src/basic/memfd-util.c +++ b/src/basic/memfd-util.c @@ -9,6 +9,7 @@ #include "alloc-util.h" #include "errno-util.h" #include "fd-util.h" +#include "log.h" #include "macro.h" #include "memfd-util.h" #include "missing_fcntl.h" diff --git a/src/basic/mempool.c b/src/basic/mempool.c index 391f29b667..7bf8340315 100644 --- a/src/basic/mempool.c +++ b/src/basic/mempool.c @@ -4,6 +4,7 @@ #include #include "format-util.h" +#include "log.h" #include "macro.h" #include "memory-util.h" #include "mempool.h" diff --git a/src/basic/mkdir.c b/src/basic/mkdir.c index 3e1545a58b..90c06681bc 100644 --- a/src/basic/mkdir.c +++ b/src/basic/mkdir.c @@ -10,6 +10,7 @@ #include "fd-util.h" #include "format-util.h" #include "fs-util.h" +#include "log.h" #include "macro.h" #include "mkdir.h" #include "path-util.h" diff --git a/src/basic/mountpoint-util.c b/src/basic/mountpoint-util.c index 9e376e5a88..6fc5e52a8e 100644 --- a/src/basic/mountpoint-util.c +++ b/src/basic/mountpoint-util.c @@ -10,6 +10,7 @@ #include "fileio.h" #include "filesystems.h" #include "fs-util.h" +#include "log.h" #include "missing_fcntl.h" #include "missing_fs.h" #include "missing_syscall.h" diff --git a/src/basic/namespace-util.c b/src/basic/namespace-util.c index e110001716..b4ef5941fb 100644 --- a/src/basic/namespace-util.c +++ b/src/basic/namespace-util.c @@ -7,6 +7,7 @@ #include "errno-util.h" #include "fd-util.h" #include "fileio.h" +#include "log.h" #include "missing_fs.h" #include "missing_magic.h" #include "missing_namespace.h" diff --git a/src/basic/os-util.c b/src/basic/os-util.c index 2e1b4e3f05..bde36a9d4d 100644 --- a/src/basic/os-util.c +++ b/src/basic/os-util.c @@ -9,6 +9,7 @@ #include "fileio.h" #include "fs-util.h" #include "glyph-util.h" +#include "log.h" #include "macro.h" #include "os-util.h" #include "parse-util.h" diff --git a/src/basic/parse-util.c b/src/basic/parse-util.c index e3cc8451b6..a10990dbe0 100644 --- a/src/basic/parse-util.c +++ b/src/basic/parse-util.c @@ -13,6 +13,7 @@ #include "errno-list.h" #include "extract-word.h" #include "locale-util.h" +#include "log.h" #include "macro.h" #include "missing_network.h" #include "parse-util.h" diff --git a/src/basic/pidfd-util.c b/src/basic/pidfd-util.c index 9eeb379682..edd2848d07 100644 --- a/src/basic/pidfd-util.c +++ b/src/basic/pidfd-util.c @@ -7,6 +7,7 @@ #include "errno-util.h" #include "fd-util.h" #include "fileio.h" +#include "log.h" #include "macro.h" #include "memory-util.h" #include "missing_fs.h" diff --git a/src/basic/pidref.c b/src/basic/pidref.c index d8c61a17c0..47ecfaacde 100644 --- a/src/basic/pidref.c +++ b/src/basic/pidref.c @@ -2,6 +2,7 @@ #include "errno-util.h" #include "fd-util.h" +#include "log.h" #include "missing_syscall.h" #include "missing_wait.h" #include "parse-util.h" diff --git a/src/basic/procfs-util.c b/src/basic/procfs-util.c index 98f390e49a..1b09905515 100644 --- a/src/basic/procfs-util.c +++ b/src/basic/procfs-util.c @@ -7,6 +7,7 @@ #include "constants.h" #include "fd-util.h" #include "fileio.h" +#include "log.h" #include "parse-util.h" #include "process-util.h" #include "procfs-util.h" diff --git a/src/basic/random-util.c b/src/basic/random-util.c index dbabf80383..c63819e42a 100644 --- a/src/basic/random-util.c +++ b/src/basic/random-util.c @@ -20,6 +20,7 @@ #include "fileio.h" #include "io-util.h" #include "iovec-util.h" +#include "log.h" #include "missing_random.h" #include "missing_syscall.h" #include "parse-util.h" diff --git a/src/basic/recurse-dir.c b/src/basic/recurse-dir.c index 31d19aef71..666d17d3aa 100644 --- a/src/basic/recurse-dir.c +++ b/src/basic/recurse-dir.c @@ -5,6 +5,7 @@ #include "fd-util.h" #include "fileio.h" #include "fs-util.h" +#include "log.h" #include "mountpoint-util.h" #include "recurse-dir.h" #include "sort-util.h" diff --git a/src/basic/rlimit-util.c b/src/basic/rlimit-util.c index 70c25adf46..5dc8b56a07 100644 --- a/src/basic/rlimit-util.c +++ b/src/basic/rlimit-util.c @@ -8,6 +8,7 @@ #include "fd-util.h" #include "fileio.h" #include "format-util.h" +#include "log.h" #include "macro.h" #include "process-util.h" #include "rlimit-util.h" diff --git a/src/basic/sigbus.c b/src/basic/sigbus.c index 307e879bf5..9adba5eb72 100644 --- a/src/basic/sigbus.c +++ b/src/basic/sigbus.c @@ -5,6 +5,7 @@ #include #include +#include "log.h" #include "macro.h" #include "memory-util.h" #include "missing_syscall.h" diff --git a/src/basic/stat-util.c b/src/basic/stat-util.c index afe9e25bbd..f3a1db5ed7 100644 --- a/src/basic/stat-util.c +++ b/src/basic/stat-util.c @@ -16,6 +16,7 @@ #include "filesystems.h" #include "fs-util.h" #include "hash-funcs.h" +#include "log.h" #include "macro.h" #include "missing_fs.h" #include "missing_magic.h" diff --git a/src/basic/string-util.c b/src/basic/string-util.c index 6cba0403d0..a836363e48 100644 --- a/src/basic/string-util.c +++ b/src/basic/string-util.c @@ -14,6 +14,7 @@ #include "glyph-util.h" #include "gunicode.h" #include "locale-util.h" +#include "log.h" #include "macro.h" #include "memory-util.h" #include "memstream-util.h" @@ -1042,6 +1043,15 @@ int free_and_strdup(char **p, const char *s) { return 1; } +int free_and_strdup_warn(char **p, const char *s) { + int r; + + r = free_and_strdup(p, s); + if (r < 0) + return log_oom(); + return r; +} + int free_and_strndup(char **p, const char *s, size_t l) { char *t; diff --git a/src/basic/string-util.h b/src/basic/string-util.h index d94e52c09d..91e63c9b12 100644 --- a/src/basic/string-util.h +++ b/src/basic/string-util.h @@ -215,14 +215,7 @@ char* strrep(const char *s, unsigned n); int split_pair(const char *s, const char *sep, char **ret_first, char **ret_second); int free_and_strdup(char **p, const char *s); -static inline int free_and_strdup_warn(char **p, const char *s) { - int r; - - r = free_and_strdup(p, s); - if (r < 0) - return log_oom(); - return r; -} +int free_and_strdup_warn(char **p, const char *s); int free_and_strndup(char **p, const char *s, size_t l) _nonnull_if_nonzero_(2, 3); int strdup_to_full(char **ret, const char *src); diff --git a/src/basic/strv.c b/src/basic/strv.c index 6a2ff09cbd..2f30854146 100644 --- a/src/basic/strv.c +++ b/src/basic/strv.c @@ -12,6 +12,7 @@ #include "extract-word.h" #include "fileio.h" #include "gunicode.h" +#include "log.h" #include "memory-util.h" #include "nulstr-util.h" #include "sort-util.h" diff --git a/src/basic/sync-util.c b/src/basic/sync-util.c index a17ab2c890..aaae53529b 100644 --- a/src/basic/sync-util.c +++ b/src/basic/sync-util.c @@ -5,6 +5,7 @@ #include "fd-util.h" #include "fs-util.h" +#include "log.h" #include "path-util.h" #include "sync-util.h" diff --git a/src/basic/tmpfile-util.c b/src/basic/tmpfile-util.c index 5addd8e8a9..371f2ae3a8 100644 --- a/src/basic/tmpfile-util.c +++ b/src/basic/tmpfile-util.c @@ -7,6 +7,7 @@ #include "fileio.h" #include "fs-util.h" #include "hexdecoct.h" +#include "log.h" #include "macro.h" #include "memfd-util.h" #include "missing_fcntl.h" diff --git a/src/basic/uid-classification.c b/src/basic/uid-classification.c index 90b51ab02b..91ea1f1167 100644 --- a/src/basic/uid-classification.c +++ b/src/basic/uid-classification.c @@ -5,6 +5,7 @@ #include "chase.h" #include "fd-util.h" #include "fileio.h" +#include "log.h" #include "string-util.h" #include "uid-classification.h" #include "user-util.h" diff --git a/src/basic/uid-range.c b/src/basic/uid-range.c index 99984d8a4e..542f00cada 100644 --- a/src/basic/uid-range.c +++ b/src/basic/uid-range.c @@ -8,6 +8,7 @@ #include "errno-util.h" #include "fd-util.h" #include "format-util.h" +#include "log.h" #include "macro.h" #include "namespace-util.h" #include "path-util.h" diff --git a/src/basic/unit-name.c b/src/basic/unit-name.c index 43c15213ef..5554f04bb7 100644 --- a/src/basic/unit-name.c +++ b/src/basic/unit-name.c @@ -10,6 +10,7 @@ #include "alloc-util.h" #include "glob-util.h" #include "hexdecoct.h" +#include "log.h" #include "memory-util.h" #include "path-util.h" #include "random-util.h" diff --git a/src/basic/user-util.c b/src/basic/user-util.c index 3249fe73e2..96b8fb270c 100644 --- a/src/basic/user-util.c +++ b/src/basic/user-util.c @@ -20,6 +20,7 @@ #include "fileio.h" #include "format-util.h" #include "lock-util.h" +#include "log.h" #include "macro.h" #include "mkdir.h" #include "parse-util.h" diff --git a/src/basic/virt.c b/src/basic/virt.c index a69997b00a..575ac917b0 100644 --- a/src/basic/virt.c +++ b/src/basic/virt.c @@ -15,6 +15,7 @@ #include "errno-util.h" #include "fd-util.h" #include "fileio.h" +#include "log.h" #include "macro.h" #include "namespace-util.h" #include "process-util.h" diff --git a/src/bootctl/bootctl-reboot-to-firmware.c b/src/bootctl/bootctl-reboot-to-firmware.c index e24234aa90..5387b4543e 100644 --- a/src/bootctl/bootctl-reboot-to-firmware.c +++ b/src/bootctl/bootctl-reboot-to-firmware.c @@ -3,6 +3,7 @@ #include "bootctl-reboot-to-firmware.h" #include "efi-api.h" #include "errno-util.h" +#include "log.h" #include "parse-util.h" int verb_reboot_to_firmware(int argc, char *argv[], void *userdata) { diff --git a/src/busctl/busctl-introspect.c b/src/busctl/busctl-introspect.c index 3da4a1390b..92dca84b99 100644 --- a/src/busctl/busctl-introspect.c +++ b/src/busctl/busctl-introspect.c @@ -4,6 +4,7 @@ #include "alloc-util.h" #include "busctl-introspect.h" +#include "log.h" #include "path-util.h" #include "string-util.h" #include "xml.h" diff --git a/src/cgtop/cgtop.c b/src/cgtop/cgtop.c index 6256291061..93bd549d69 100644 --- a/src/cgtop/cgtop.c +++ b/src/cgtop/cgtop.c @@ -18,6 +18,7 @@ #include "fd-util.h" #include "fileio.h" #include "hashmap.h" +#include "log.h" #include "main-func.h" #include "missing_sched.h" #include "parse-argument.h" diff --git a/src/core/clock-warp.c b/src/core/clock-warp.c index e9a832a8e7..fd44b526a5 100644 --- a/src/core/clock-warp.c +++ b/src/core/clock-warp.c @@ -8,6 +8,7 @@ #include "clock-util.h" #include "clock-warp.h" #include "errno-util.h" +#include "log.h" #include "time-util.h" int clock_reset_timewarp(void) { diff --git a/src/core/efi-random.c b/src/core/efi-random.c index d11b9a65e5..775f678e1c 100644 --- a/src/core/efi-random.c +++ b/src/core/efi-random.c @@ -9,6 +9,7 @@ #include "efivars.h" #include "fd-util.h" #include "fs-util.h" +#include "log.h" #include "random-util.h" #include "strv.h" diff --git a/src/core/ipe-setup.c b/src/core/ipe-setup.c index 4648d43829..60396f7bdd 100644 --- a/src/core/ipe-setup.c +++ b/src/core/ipe-setup.c @@ -5,6 +5,7 @@ #include "fd-util.h" #include "fileio.h" #include "ipe-setup.h" +#include "log.h" #include "nulstr-util.h" #include "path-util.h" diff --git a/src/core/kmod-setup.c b/src/core/kmod-setup.c index 5dc429a07d..a9a969337d 100644 --- a/src/core/kmod-setup.c +++ b/src/core/kmod-setup.c @@ -8,6 +8,7 @@ #include "efi-api.h" #include "fileio.h" #include "kmod-setup.h" +#include "log.h" #include "macro.h" #include "module-util.h" #include "recurse-dir.h" diff --git a/src/core/show-status.c b/src/core/show-status.c index 7c7c10f963..9519fb1b84 100644 --- a/src/core/show-status.c +++ b/src/core/show-status.c @@ -7,6 +7,7 @@ #include "alloc-util.h" #include "fd-util.h" #include "iovec-util.h" +#include "log.h" #include "parse-util.h" #include "show-status.h" #include "string-table.h" diff --git a/src/coredump/coredump-vacuum.c b/src/coredump/coredump-vacuum.c index 3f99d04cf0..e908ded8a0 100644 --- a/src/coredump/coredump-vacuum.c +++ b/src/coredump/coredump-vacuum.c @@ -11,6 +11,7 @@ #include "fd-util.h" #include "fs-util.h" #include "hashmap.h" +#include "log.h" #include "macro.h" #include "memory-util.h" #include "stat-util.h" diff --git a/src/creds/creds.c b/src/creds/creds.c index 5d3acb939c..98e19bd981 100644 --- a/src/creds/creds.c +++ b/src/creds/creds.c @@ -17,6 +17,7 @@ #include "io-util.h" #include "json-util.h" #include "libmount-util.h" +#include "log.h" #include "main-func.h" #include "memory-util.h" #include "missing_magic.h" diff --git a/src/cryptenroll/cryptenroll-list.c b/src/cryptenroll/cryptenroll-list.c index ffc1067d2d..5308182fe0 100644 --- a/src/cryptenroll/cryptenroll-list.c +++ b/src/cryptenroll/cryptenroll-list.c @@ -6,6 +6,7 @@ #include "cryptenroll.h" #include "format-table.h" #include "json-util.h" +#include "log.h" #include "parse-util.h" struct keyslot_metadata { diff --git a/src/cryptenroll/cryptenroll-password.c b/src/cryptenroll/cryptenroll-password.c index c6888cc83b..078e37900d 100644 --- a/src/cryptenroll/cryptenroll-password.c +++ b/src/cryptenroll/cryptenroll-password.c @@ -6,6 +6,7 @@ #include "errno-util.h" #include "escape.h" #include "iovec-util.h" +#include "log.h" #include "memory-util.h" #include "password-quality-util.h" #include "strv.h" diff --git a/src/cryptenroll/cryptenroll-recovery.c b/src/cryptenroll/cryptenroll-recovery.c index acc4341712..715e1c7387 100644 --- a/src/cryptenroll/cryptenroll-recovery.c +++ b/src/cryptenroll/cryptenroll-recovery.c @@ -5,6 +5,7 @@ #include "glyph-util.h" #include "iovec-util.h" #include "json-util.h" +#include "log.h" #include "memory-util.h" #include "qrcode-util.h" #include "recovery-key.h" diff --git a/src/cryptenroll/cryptenroll-wipe.c b/src/cryptenroll/cryptenroll-wipe.c index 67c3795d34..68bc7f7235 100644 --- a/src/cryptenroll/cryptenroll-wipe.c +++ b/src/cryptenroll/cryptenroll-wipe.c @@ -5,6 +5,7 @@ #include "cryptenroll-wipe.h" #include "cryptenroll.h" #include "json-util.h" +#include "log.h" #include "memory-util.h" #include "parse-util.h" #include "set.h" diff --git a/src/cryptsetup/cryptsetup-keyfile.c b/src/cryptsetup/cryptsetup-keyfile.c index e14d0bbda2..348e42b3f7 100644 --- a/src/cryptsetup/cryptsetup-keyfile.c +++ b/src/cryptsetup/cryptsetup-keyfile.c @@ -2,6 +2,7 @@ #include "cryptsetup-keyfile.h" #include "fileio.h" +#include "log.h" #include "path-util.h" #include "strv.h" diff --git a/src/detect-virt/detect-virt.c b/src/detect-virt/detect-virt.c index 9aa6c06748..4f5f5d19e4 100644 --- a/src/detect-virt/detect-virt.c +++ b/src/detect-virt/detect-virt.c @@ -8,6 +8,7 @@ #include "alloc-util.h" #include "build.h" #include "confidential-virt.h" +#include "log.h" #include "main-func.h" #include "pretty-print.h" #include "string-table.h" diff --git a/src/factory-reset/factory-reset-generator.c b/src/factory-reset/factory-reset-generator.c index d3c961a2a9..5755eca2b8 100644 --- a/src/factory-reset/factory-reset-generator.c +++ b/src/factory-reset/factory-reset-generator.c @@ -2,6 +2,7 @@ #include "factory-reset.h" #include "generator.h" +#include "log.h" #include "special.h" /* This generator pulls factory-reset-now.target into the initial transaction the kernel command line's diff --git a/src/fuzz/fuzz.h b/src/fuzz/fuzz.h index 6961fce7c1..6da06f237b 100644 --- a/src/fuzz/fuzz.h +++ b/src/fuzz/fuzz.h @@ -7,6 +7,7 @@ #include "assert-util.h" #include "env-util.h" #include "fileio.h" +#include "log.h" /* The entry point into the fuzzer */ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size); diff --git a/src/home/homectl-fido2.c b/src/home/homectl-fido2.c index 39c6d8a545..f462787595 100644 --- a/src/home/homectl-fido2.c +++ b/src/home/homectl-fido2.c @@ -16,6 +16,7 @@ #include "libcrypt-util.h" #include "libfido2-util.h" #include "locale-util.h" +#include "log.h" #include "memory-util.h" #include "random-util.h" #include "strv.h" diff --git a/src/home/homectl-pkcs11.c b/src/home/homectl-pkcs11.c index 9a75da74d3..c80cfc5216 100644 --- a/src/home/homectl-pkcs11.c +++ b/src/home/homectl-pkcs11.c @@ -5,6 +5,7 @@ #include "hexdecoct.h" #include "homectl-pkcs11.h" #include "libcrypt-util.h" +#include "log.h" #include "memory-util.h" #include "openssl-util.h" #include "pkcs11-util.h" diff --git a/src/home/homectl-pkcs11.h b/src/home/homectl-pkcs11.h index 994198f2ee..ffe0bd90fb 100644 --- a/src/home/homectl-pkcs11.h +++ b/src/home/homectl-pkcs11.h @@ -3,6 +3,8 @@ #include "sd-json.h" +#include "log.h" + int identity_add_token_pin(sd_json_variant **v, const char *pin); #if HAVE_P11KIT diff --git a/src/home/homectl-recovery-key.c b/src/home/homectl-recovery-key.c index cac7d23469..bb4a01f895 100644 --- a/src/home/homectl-recovery-key.c +++ b/src/home/homectl-recovery-key.c @@ -6,6 +6,7 @@ #include "homectl-recovery-key.h" #include "json-util.h" #include "libcrypt-util.h" +#include "log.h" #include "memory-util.h" #include "qrcode-util.h" #include "random-util.h" diff --git a/src/home/homed-home-bus.c b/src/home/homed-home-bus.c index a3e6a32162..2214496dc0 100644 --- a/src/home/homed-home-bus.c +++ b/src/home/homed-home-bus.c @@ -10,6 +10,7 @@ #include "homed-bus.h" #include "homed-home-bus.h" #include "homed-home.h" +#include "log.h" #include "strv.h" #include "user-record-util.h" #include "user-util.h" diff --git a/src/home/homed-home.c b/src/home/homed-home.c index 0f970ac2d0..0b61b08abf 100644 --- a/src/home/homed-home.c +++ b/src/home/homed-home.c @@ -22,6 +22,7 @@ #include "homed-home.h" #include "homed-home-bus.h" #include "json-util.h" +#include "log.h" #include "memfd-util.h" #include "missing_magic.h" #include "missing_mman.h" diff --git a/src/home/homed-manager-bus.c b/src/home/homed-manager-bus.c index bf252ce835..24faf40bd5 100644 --- a/src/home/homed-manager-bus.c +++ b/src/home/homed-manager-bus.c @@ -13,6 +13,7 @@ #include "homed-home-bus.h" #include "homed-manager-bus.h" #include "homed-manager.h" +#include "log.h" #include "openssl-util.h" #include "path-util.h" #include "strv.h" diff --git a/src/home/homed-operation.c b/src/home/homed-operation.c index 618e920a59..a0ce239615 100644 --- a/src/home/homed-operation.c +++ b/src/home/homed-operation.c @@ -2,6 +2,7 @@ #include "fd-util.h" #include "homed-operation.h" +#include "log.h" Operation *operation_new(OperationType type, sd_bus_message *m) { Operation *o; diff --git a/src/home/homed-varlink.c b/src/home/homed-varlink.c index ef30ea7eaf..8b4cb91a21 100644 --- a/src/home/homed-varlink.c +++ b/src/home/homed-varlink.c @@ -4,6 +4,7 @@ #include "group-record.h" #include "homed-varlink.h" #include "json-util.h" +#include "log.h" #include "strv.h" #include "user-record-util.h" #include "user-record.h" diff --git a/src/home/homework-blob.c b/src/home/homework-blob.c index 0ad2941539..5ba519a779 100644 --- a/src/home/homework-blob.c +++ b/src/home/homework-blob.c @@ -9,6 +9,7 @@ #include "homework-blob.h" #include "homework.h" #include "install-file.h" +#include "log.h" #include "macro.h" #include "path-util.h" #include "recurse-dir.h" diff --git a/src/home/homework-fido2.c b/src/home/homework-fido2.c index 5c7cd52e1b..483487aecc 100644 --- a/src/home/homework-fido2.c +++ b/src/home/homework-fido2.c @@ -5,6 +5,7 @@ #include "hexdecoct.h" #include "homework-fido2.h" #include "libfido2-util.h" +#include "log.h" #include "memory-util.h" #include "strv.h" diff --git a/src/home/homework-password-cache.c b/src/home/homework-password-cache.c index b8202ef695..107a1db379 100644 --- a/src/home/homework-password-cache.c +++ b/src/home/homework-password-cache.c @@ -2,6 +2,7 @@ #include "homework-password-cache.h" #include "keyring-util.h" +#include "log.h" #include "missing_syscall.h" #include "user-record.h" diff --git a/src/home/homework-pkcs11.c b/src/home/homework-pkcs11.c index f3719948d0..b1b76015b0 100644 --- a/src/home/homework-pkcs11.c +++ b/src/home/homework-pkcs11.c @@ -2,6 +2,7 @@ #include "hexdecoct.h" #include "homework-pkcs11.h" +#include "log.h" #include "pkcs11-util.h" #include "strv.h" diff --git a/src/home/homework-quota.c b/src/home/homework-quota.c index 363be87104..e2b43afbea 100644 --- a/src/home/homework-quota.c +++ b/src/home/homework-quota.c @@ -7,6 +7,7 @@ #include "fd-util.h" #include "format-util.h" #include "homework-quota.h" +#include "log.h" #include "missing_magic.h" #include "quota-util.h" #include "stat-util.h" diff --git a/src/home/pam_systemd_home.c b/src/home/pam_systemd_home.c index e3a687ca64..aef56b8ce3 100644 --- a/src/home/pam_systemd_home.c +++ b/src/home/pam_systemd_home.c @@ -13,6 +13,7 @@ #include "fd-util.h" #include "home-util.h" #include "locale-util.h" +#include "log.h" #include "memory-util.h" #include "pam-util.h" #include "parse-util.h" diff --git a/src/home/user-record-password-quality.c b/src/home/user-record-password-quality.c index 38f4acb0e7..c60b5f0ea4 100644 --- a/src/home/user-record-password-quality.c +++ b/src/home/user-record-password-quality.c @@ -4,6 +4,7 @@ #include "errno-util.h" #include "home-util.h" #include "libcrypt-util.h" +#include "log.h" #include "password-quality-util.h" #include "strv.h" #include "user-record-password-quality.h" diff --git a/src/home/user-record-sign.c b/src/home/user-record-sign.c index a50c186d67..2cdd20efe5 100644 --- a/src/home/user-record-sign.c +++ b/src/home/user-record-sign.c @@ -5,6 +5,7 @@ #include "fd-util.h" #include "fileio.h" #include "json-util.h" +#include "log.h" #include "memstream-util.h" #include "openssl-util.h" #include "user-record-sign.h" diff --git a/src/home/user-record-util.c b/src/home/user-record-util.c index 344ff73e7d..5569eb6935 100644 --- a/src/home/user-record-util.c +++ b/src/home/user-record-util.c @@ -10,6 +10,7 @@ #include "id128-util.h" #include "json-util.h" #include "libcrypt-util.h" +#include "log.h" #include "memory-util.h" #include "mountpoint-util.h" #include "path-util.h" diff --git a/src/hostname/hostnamectl.c b/src/hostname/hostnamectl.c index 8374f452cf..6530098025 100644 --- a/src/hostname/hostnamectl.c +++ b/src/hostname/hostnamectl.c @@ -22,6 +22,7 @@ #include "format-table.h" #include "hostname-setup.h" #include "hostname-util.h" +#include "log.h" #include "main-func.h" #include "parse-argument.h" #include "polkit-agent.h" diff --git a/src/hostname/hostnamed.c b/src/hostname/hostnamed.c index 1f60423c5b..a3b8bb96bf 100644 --- a/src/hostname/hostnamed.c +++ b/src/hostname/hostnamed.c @@ -26,6 +26,7 @@ #include "hostname-util.h" #include "id128-util.h" #include "json-util.h" +#include "log.h" #include "main-func.h" #include "nulstr-util.h" #include "os-util.h" diff --git a/src/hwdb/hwdb.c b/src/hwdb/hwdb.c index 2ce8b2dd42..70ff1d7691 100644 --- a/src/hwdb/hwdb.c +++ b/src/hwdb/hwdb.c @@ -7,6 +7,7 @@ #include "alloc-util.h" #include "build.h" #include "hwdb-util.h" +#include "log.h" #include "main-func.h" #include "pretty-print.h" #include "selinux-util.h" diff --git a/src/id128/id128.c b/src/id128/id128.c index d3e2f28c1e..e3f69a4f2a 100644 --- a/src/id128/id128.c +++ b/src/id128/id128.c @@ -8,6 +8,7 @@ #include "format-table.h" #include "gpt.h" #include "id128-print.h" +#include "log.h" #include "main-func.h" #include "parse-argument.h" #include "pretty-print.h" diff --git a/src/import/curl-util.c b/src/import/curl-util.c index efb7e6d7c4..c8217bd4d2 100644 --- a/src/import/curl-util.c +++ b/src/import/curl-util.c @@ -7,6 +7,7 @@ #include "curl-util.h" #include "fd-util.h" #include "locale-util.h" +#include "log.h" #include "string-util.h" #include "version.h" diff --git a/src/import/export-raw.c b/src/import/export-raw.c index b47f4ba120..cdc7cf1782 100644 --- a/src/import/export-raw.c +++ b/src/import/export-raw.c @@ -12,6 +12,7 @@ #include "format-util.h" #include "fs-util.h" #include "import-common.h" +#include "log.h" #include "missing_fcntl.h" #include "pretty-print.h" #include "ratelimit.h" diff --git a/src/import/export-tar.c b/src/import/export-tar.c index 1596d23e82..a2af379bf8 100644 --- a/src/import/export-tar.c +++ b/src/import/export-tar.c @@ -7,6 +7,7 @@ #include "export-tar.h" #include "fd-util.h" #include "import-common.h" +#include "log.h" #include "pretty-print.h" #include "process-util.h" #include "ratelimit.h" diff --git a/src/import/import-common.c b/src/import/import-common.c index 09faf16f9c..be09c766cb 100644 --- a/src/import/import-common.c +++ b/src/import/import-common.c @@ -15,6 +15,7 @@ #include "fs-util.h" #include "hostname-util.h" #include "import-common.h" +#include "log.h" #include "os-util.h" #include "process-util.h" #include "selinux-util.h" diff --git a/src/import/import-compress.c b/src/import/import-compress.c index 67dd446dda..73bfc1f0fa 100644 --- a/src/import/import-compress.c +++ b/src/import/import-compress.c @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #include "import-compress.h" +#include "log.h" #include "string-table.h" void import_compress_free(ImportCompress *c) { diff --git a/src/import/import-raw.c b/src/import/import-raw.c index 4ddf78794b..033f5aeb65 100644 --- a/src/import/import-raw.c +++ b/src/import/import-raw.c @@ -15,6 +15,7 @@ #include "import-raw.h" #include "install-file.h" #include "io-util.h" +#include "log.h" #include "machine-pool.h" #include "missing_fs.h" #include "mkdir-label.h" diff --git a/src/import/import-tar.c b/src/import/import-tar.c index 4b4cf11937..7cad83ff00 100644 --- a/src/import/import-tar.c +++ b/src/import/import-tar.c @@ -15,6 +15,7 @@ #include "import-tar.h" #include "install-file.h" #include "io-util.h" +#include "log.h" #include "machine-pool.h" #include "missing_fs.h" #include "mkdir-label.h" diff --git a/src/import/pull-job.c b/src/import/pull-job.c index 848255179b..52c1faef8a 100644 --- a/src/import/pull-job.c +++ b/src/import/pull-job.c @@ -11,6 +11,7 @@ #include "hexdecoct.h" #include "import-util.h" #include "io-util.h" +#include "log.h" #include "machine-pool.h" #include "parse-util.h" #include "pull-common.h" diff --git a/src/import/pull-raw.c b/src/import/pull-raw.c index ab2c6a0541..400a9d6adf 100644 --- a/src/import/pull-raw.c +++ b/src/import/pull-raw.c @@ -15,6 +15,7 @@ #include "import-common.h" #include "import-util.h" #include "install-file.h" +#include "log.h" #include "macro.h" #include "missing_fs.h" #include "mkdir-label.h" diff --git a/src/import/pull-tar.c b/src/import/pull-tar.c index 0336adeb5d..8c9e4f3395 100644 --- a/src/import/pull-tar.c +++ b/src/import/pull-tar.c @@ -15,6 +15,7 @@ #include "import-common.h" #include "import-util.h" #include "install-file.h" +#include "log.h" #include "macro.h" #include "mkdir-label.h" #include "path-util.h" diff --git a/src/integritysetup/integrity-util.c b/src/integritysetup/integrity-util.c index 69f55c256d..4d65f5be74 100644 --- a/src/integritysetup/integrity-util.c +++ b/src/integritysetup/integrity-util.c @@ -3,6 +3,7 @@ #include "extract-word.h" #include "fileio.h" +#include "log.h" #include "path-util.h" #include "percent-util.h" diff --git a/src/journal-remote/journal-remote-parse.c b/src/journal-remote/journal-remote-parse.c index 2ef084f502..4beb8604aa 100644 --- a/src/journal-remote/journal-remote-parse.c +++ b/src/journal-remote/journal-remote-parse.c @@ -3,6 +3,7 @@ #include "alloc-util.h" #include "fd-util.h" #include "journal-remote-parse.h" +#include "log.h" #include "parse-util.h" #include "string-util.h" diff --git a/src/journal-remote/journal-remote-write.c b/src/journal-remote/journal-remote-write.c index d794277b27..afc05664c9 100644 --- a/src/journal-remote/journal-remote-write.c +++ b/src/journal-remote/journal-remote-write.c @@ -5,6 +5,7 @@ #include "alloc-util.h" #include "journal-file-util.h" #include "journal-remote.h" +#include "log.h" #include "path-util.h" #include "stat-util.h" diff --git a/src/journal-remote/journal-remote.c b/src/journal-remote/journal-remote.c index 77e9702bf6..ef50519756 100644 --- a/src/journal-remote/journal-remote.c +++ b/src/journal-remote/journal-remote.c @@ -17,6 +17,7 @@ #include "journal-file-util.h" #include "journal-remote-write.h" #include "journal-remote.h" +#include "log.h" #include "macro.h" #include "parse-util.h" #include "parse-helpers.h" diff --git a/src/journal/cat.c b/src/journal/cat.c index 90d4f5352f..20a08b1b29 100644 --- a/src/journal/cat.c +++ b/src/journal/cat.c @@ -15,6 +15,7 @@ #include "env-util.h" #include "fd-util.h" #include "format-util.h" +#include "log.h" #include "main-func.h" #include "parse-argument.h" #include "parse-util.h" diff --git a/src/journal/journalctl-authenticate.c b/src/journal/journalctl-authenticate.c index 18b412bbc7..d62d887b0e 100644 --- a/src/journal/journalctl-authenticate.c +++ b/src/journal/journalctl-authenticate.c @@ -14,6 +14,7 @@ #include "journal-authenticate.h" #include "journalctl.h" #include "journalctl-authenticate.h" +#include "log.h" #include "memstream-util.h" #include "path-util.h" #include "qrcode-util.h" diff --git a/src/journal/journalctl-catalog.c b/src/journal/journalctl-catalog.c index 41ea3816e7..55a8c3d26d 100644 --- a/src/journal/journalctl-catalog.c +++ b/src/journal/journalctl-catalog.c @@ -3,6 +3,7 @@ #include "catalog.h" #include "journalctl.h" #include "journalctl-catalog.h" +#include "log.h" #include "path-util.h" int action_update_catalog(void) { diff --git a/src/journal/journalctl-filter.c b/src/journal/journalctl-filter.c index 696a231446..2d8981ac77 100644 --- a/src/journal/journalctl-filter.c +++ b/src/journal/journalctl-filter.c @@ -10,6 +10,7 @@ #include "journalctl.h" #include "journalctl-filter.h" #include "journalctl-util.h" +#include "log.h" #include "logs-show.h" #include "missing_sched.h" #include "path-util.h" diff --git a/src/journal/journalctl-misc.c b/src/journal/journalctl-misc.c index 46a70ae1ac..4e8ecda33b 100644 --- a/src/journal/journalctl-misc.c +++ b/src/journal/journalctl-misc.c @@ -9,6 +9,7 @@ #include "journalctl.h" #include "journalctl-misc.h" #include "journalctl-util.h" +#include "log.h" #include "logs-show.h" #include "syslog-util.h" diff --git a/src/journal/journalctl-show.c b/src/journal/journalctl-show.c index 9f07facad4..7515db0db9 100644 --- a/src/journal/journalctl-show.c +++ b/src/journal/journalctl-show.c @@ -10,6 +10,7 @@ #include "journalctl-filter.h" #include "journalctl-show.h" #include "journalctl-util.h" +#include "log.h" #include "logs-show.h" #include "terminal-util.h" diff --git a/src/journal/journalctl-util.c b/src/journal/journalctl-util.c index 918e5713f6..6f393f3ffd 100644 --- a/src/journal/journalctl-util.c +++ b/src/journal/journalctl-util.c @@ -7,6 +7,7 @@ #include "journal-util.h" #include "journalctl.h" #include "journalctl-util.h" +#include "log.h" #include "logs-show.h" #include "nulstr-util.h" #include "rlimit-util.h" diff --git a/src/journal/journalctl-varlink.c b/src/journal/journalctl-varlink.c index 712e93292d..1f6671c01d 100644 --- a/src/journal/journalctl-varlink.c +++ b/src/journal/journalctl-varlink.c @@ -8,6 +8,7 @@ #include "journalctl.h" #include "journalctl-util.h" #include "journalctl-varlink.h" +#include "log.h" #include "varlink-util.h" static int varlink_connect_journal(sd_varlink **ret) { diff --git a/src/journal/journald-rate-limit.c b/src/journal/journald-rate-limit.c index a1ae17269c..227d860807 100644 --- a/src/journal/journald-rate-limit.c +++ b/src/journal/journald-rate-limit.c @@ -3,6 +3,7 @@ #include "alloc-util.h" #include "hashmap.h" #include "journald-rate-limit.h" +#include "log.h" #include "logarithm.h" #include "string-util.h" #include "time-util.h" diff --git a/src/keyutil/keyutil.c b/src/keyutil/keyutil.c index 3e51332aaa..8795b447bb 100644 --- a/src/keyutil/keyutil.c +++ b/src/keyutil/keyutil.c @@ -8,6 +8,7 @@ #include "build.h" #include "fd-util.h" #include "fileio.h" +#include "log.h" #include "main-func.h" #include "memstream-util.h" #include "openssl-util.h" diff --git a/src/libsystemd-network/dhcp-network.c b/src/libsystemd-network/dhcp-network.c index 2e73983d6b..44c6c14f37 100644 --- a/src/libsystemd-network/dhcp-network.c +++ b/src/libsystemd-network/dhcp-network.c @@ -17,6 +17,7 @@ #include "dhcp-network.h" #include "dhcp-protocol.h" #include "fd-util.h" +#include "log.h" #include "unaligned.h" static int _bind_raw_socket( diff --git a/src/libsystemd-network/dhcp-packet.c b/src/libsystemd-network/dhcp-packet.c index 75b1d7e6cc..6dcfe80672 100644 --- a/src/libsystemd-network/dhcp-packet.c +++ b/src/libsystemd-network/dhcp-packet.c @@ -10,6 +10,7 @@ #include "dhcp-option.h" #include "dhcp-packet.h" +#include "log.h" #include "memory-util.h" #define DHCP_CLIENT_MIN_OPTIONS_SIZE 312 diff --git a/src/libsystemd-network/sd-dhcp-client-id.c b/src/libsystemd-network/sd-dhcp-client-id.c index 3e06501906..82d9d7e3c9 100644 --- a/src/libsystemd-network/sd-dhcp-client-id.c +++ b/src/libsystemd-network/sd-dhcp-client-id.c @@ -3,6 +3,7 @@ #include "alloc-util.h" #include "dhcp-client-id-internal.h" #include "iovec-util.h" +#include "log.h" #include "json-util.h" #include "unaligned.h" #include "utf8.h" diff --git a/src/libsystemd-network/sd-dns-resolver.c b/src/libsystemd-network/sd-dns-resolver.c index 1490f5f9a5..2ffbaa72e2 100644 --- a/src/libsystemd-network/sd-dns-resolver.c +++ b/src/libsystemd-network/sd-dns-resolver.c @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #include "dns-resolver-internal.h" +#include "log.h" #include "macro.h" #include "unaligned.h" #include "socket-netlink.h" diff --git a/src/libsystemd-network/test-acd.c b/src/libsystemd-network/test-acd.c index 4544cf8a57..6b979bd10b 100644 --- a/src/libsystemd-network/test-acd.c +++ b/src/libsystemd-network/test-acd.c @@ -12,6 +12,7 @@ #include "sd-netlink.h" #include "in-addr-util.h" +#include "log.h" #include "tests.h" static void acd_handler(sd_ipv4acd *acd, int event, void *userdata) { diff --git a/src/libsystemd-network/test-dhcp-client.c b/src/libsystemd-network/test-dhcp-client.c index 37ac827bd6..06a0cd8480 100644 --- a/src/libsystemd-network/test-dhcp-client.c +++ b/src/libsystemd-network/test-dhcp-client.c @@ -23,6 +23,7 @@ #include "dhcp-packet.h" #include "ether-addr-util.h" #include "fd-util.h" +#include "log.h" #include "random-util.h" #include "tests.h" diff --git a/src/libsystemd-network/test-dhcp-option.c b/src/libsystemd-network/test-dhcp-option.c index 162e826f98..2a07256ea0 100644 --- a/src/libsystemd-network/test-dhcp-option.c +++ b/src/libsystemd-network/test-dhcp-option.c @@ -10,6 +10,7 @@ #include "dhcp-option.h" #include "dhcp-packet.h" #include "ether-addr-util.h" +#include "log.h" #include "macro.h" #include "memory-util.h" #include "tests.h" diff --git a/src/libsystemd-network/test-ipv4ll-manual.c b/src/libsystemd-network/test-ipv4ll-manual.c index b4e6d2428f..de072dbee4 100644 --- a/src/libsystemd-network/test-ipv4ll-manual.c +++ b/src/libsystemd-network/test-ipv4ll-manual.c @@ -13,6 +13,7 @@ #include "alloc-util.h" #include "in-addr-util.h" +#include "log.h" #include "parse-util.h" #include "string-util.h" #include "tests.h" diff --git a/src/libsystemd-network/test-ipv4ll.c b/src/libsystemd-network/test-ipv4ll.c index 0dbc0873ba..17c981307b 100644 --- a/src/libsystemd-network/test-ipv4ll.c +++ b/src/libsystemd-network/test-ipv4ll.c @@ -14,6 +14,7 @@ #include "arp-util.h" #include "fd-util.h" +#include "log.h" #include "socket-util.h" #include "tests.h" diff --git a/src/libsystemd-network/test-lldp-rx.c b/src/libsystemd-network/test-lldp-rx.c index feb53b520c..704c9a0015 100644 --- a/src/libsystemd-network/test-lldp-rx.c +++ b/src/libsystemd-network/test-lldp-rx.c @@ -12,6 +12,7 @@ #include "alloc-util.h" #include "fd-util.h" #include "lldp-network.h" +#include "log.h" #include "macro.h" #include "string-util.h" #include "tests.h" diff --git a/src/libsystemd-network/test-sd-dhcp-lease.c b/src/libsystemd-network/test-sd-dhcp-lease.c index 910b622191..5bb0b39180 100644 --- a/src/libsystemd-network/test-sd-dhcp-lease.c +++ b/src/libsystemd-network/test-sd-dhcp-lease.c @@ -3,6 +3,7 @@ #include #include "dhcp-lease-internal.h" +#include "log.h" #include "macro.h" #include "string-util.h" #include "strv.h" diff --git a/src/libsystemd/sd-bus/bus-container.c b/src/libsystemd/sd-bus/bus-container.c index 2eca82b033..54da4169a6 100644 --- a/src/libsystemd/sd-bus/bus-container.c +++ b/src/libsystemd/sd-bus/bus-container.c @@ -7,6 +7,7 @@ #include "bus-internal.h" #include "bus-socket.h" #include "fd-util.h" +#include "log.h" #include "namespace-util.h" #include "process-util.h" #include "string-util.h" diff --git a/src/libsystemd/sd-bus/bus-control.c b/src/libsystemd/sd-bus/bus-control.c index c420584c03..fdcd5ff2da 100644 --- a/src/libsystemd/sd-bus/bus-control.c +++ b/src/libsystemd/sd-bus/bus-control.c @@ -15,6 +15,7 @@ #include "bus-message.h" #include "capability-util.h" #include "fd-util.h" +#include "log.h" #include "process-util.h" #include "stdio-util.h" #include "string-util.h" diff --git a/src/libsystemd/sd-bus/bus-convenience.c b/src/libsystemd/sd-bus/bus-convenience.c index e9a350bad6..e7c1d703bd 100644 --- a/src/libsystemd/sd-bus/bus-convenience.c +++ b/src/libsystemd/sd-bus/bus-convenience.c @@ -7,6 +7,7 @@ #include "bus-message.h" #include "bus-signature.h" #include "bus-type.h" +#include "log.h" #include "string-util.h" _public_ int sd_bus_message_send(sd_bus_message *reply) { diff --git a/src/libsystemd/sd-bus/bus-dump.c b/src/libsystemd/sd-bus/bus-dump.c index 7c7dfc74d6..2bcfc4a463 100644 --- a/src/libsystemd/sd-bus/bus-dump.c +++ b/src/libsystemd/sd-bus/bus-dump.c @@ -13,6 +13,7 @@ #include "fileio.h" #include "format-util.h" #include "glyph-util.h" +#include "log.h" #include "macro.h" #include "pcapng.h" #include "string-util.h" diff --git a/src/libsystemd/sd-bus/bus-error.c b/src/libsystemd/sd-bus/bus-error.c index 58c24d25c0..9b812dd36c 100644 --- a/src/libsystemd/sd-bus/bus-error.c +++ b/src/libsystemd/sd-bus/bus-error.c @@ -12,6 +12,7 @@ #include "bus-error.h" #include "errno-list.h" #include "errno-util.h" +#include "log.h" #include "string-util.h" #include "strv.h" diff --git a/src/libsystemd/sd-bus/bus-internal.c b/src/libsystemd/sd-bus/bus-internal.c index 56f9373af1..6a448c797f 100644 --- a/src/libsystemd/sd-bus/bus-internal.c +++ b/src/libsystemd/sd-bus/bus-internal.c @@ -5,6 +5,7 @@ #include "bus-message.h" #include "escape.h" #include "hexdecoct.h" +#include "log.h" #include "string-util.h" bool object_path_is_valid(const char *p) { diff --git a/src/libsystemd/sd-bus/bus-introspect.c b/src/libsystemd/sd-bus/bus-introspect.c index 84c8774c6c..4c3914ff96 100644 --- a/src/libsystemd/sd-bus/bus-introspect.c +++ b/src/libsystemd/sd-bus/bus-introspect.c @@ -7,6 +7,7 @@ #include "bus-signature.h" #include "fd-util.h" #include "fileio.h" +#include "log.h" #include "memory-util.h" #include "memstream-util.h" #include "string-util.h" diff --git a/src/libsystemd/sd-bus/bus-kernel.c b/src/libsystemd/sd-bus/bus-kernel.c index d7ff83441b..7fdab03209 100644 --- a/src/libsystemd/sd-bus/bus-kernel.c +++ b/src/libsystemd/sd-bus/bus-kernel.c @@ -18,6 +18,7 @@ #include "fd-util.h" #include "fileio.h" #include "format-util.h" +#include "log.h" #include "memfd-util.h" #include "parse-util.h" #include "stdio-util.h" diff --git a/src/libsystemd/sd-bus/bus-match.c b/src/libsystemd/sd-bus/bus-match.c index 5434156ccd..a07d9d0521 100644 --- a/src/libsystemd/sd-bus/bus-match.c +++ b/src/libsystemd/sd-bus/bus-match.c @@ -7,6 +7,7 @@ #include "fd-util.h" #include "fileio.h" #include "hexdecoct.h" +#include "log.h" #include "memstream-util.h" #include "sort-util.h" #include "string-util.h" diff --git a/src/libsystemd/sd-bus/bus-message.c b/src/libsystemd/sd-bus/bus-message.c index 04981eac42..cdd988c3be 100644 --- a/src/libsystemd/sd-bus/bus-message.c +++ b/src/libsystemd/sd-bus/bus-message.c @@ -15,6 +15,7 @@ #include "iovec-util.h" #include "memfd-util.h" #include "memory-util.h" +#include "log.h" #include "string-util.h" #include "strv.h" #include "time-util.h" diff --git a/src/libsystemd/sd-bus/bus-objects.c b/src/libsystemd/sd-bus/bus-objects.c index c10c8a46d4..2e3c4e0d68 100644 --- a/src/libsystemd/sd-bus/bus-objects.c +++ b/src/libsystemd/sd-bus/bus-objects.c @@ -10,6 +10,7 @@ #include "bus-signature.h" #include "bus-slot.h" #include "bus-type.h" +#include "log.h" #include "string-util.h" #include "strv.h" diff --git a/src/libsystemd/sd-bus/bus-slot.c b/src/libsystemd/sd-bus/bus-slot.c index 8238e31c90..25272dbc0f 100644 --- a/src/libsystemd/sd-bus/bus-slot.c +++ b/src/libsystemd/sd-bus/bus-slot.c @@ -6,6 +6,7 @@ #include "bus-control.h" #include "bus-objects.h" #include "bus-slot.h" +#include "log.h" #include "string-util.h" sd_bus_slot *bus_slot_allocate( diff --git a/src/libsystemd/sd-bus/bus-socket.c b/src/libsystemd/sd-bus/bus-socket.c index d5098ba650..7271c68971 100644 --- a/src/libsystemd/sd-bus/bus-socket.c +++ b/src/libsystemd/sd-bus/bus-socket.c @@ -19,6 +19,7 @@ #include "hexdecoct.h" #include "io-util.h" #include "iovec-util.h" +#include "log.h" #include "macro.h" #include "memory-util.h" #include "path-util.h" diff --git a/src/libsystemd/sd-bus/bus-track.c b/src/libsystemd/sd-bus/bus-track.c index 6f6fa2d943..3c3e0c18ec 100644 --- a/src/libsystemd/sd-bus/bus-track.c +++ b/src/libsystemd/sd-bus/bus-track.c @@ -5,6 +5,7 @@ #include "alloc-util.h" #include "bus-internal.h" #include "bus-track.h" +#include "log.h" #include "string-util.h" struct track_item { diff --git a/src/libsystemd/sd-bus/bus-type.c b/src/libsystemd/sd-bus/bus-type.c index 6a0f53d1d1..d1fc836dde 100644 --- a/src/libsystemd/sd-bus/bus-type.c +++ b/src/libsystemd/sd-bus/bus-type.c @@ -6,6 +6,7 @@ #include "bus-internal.h" #include "bus-type.h" +#include "log.h" bool bus_type_is_valid(char c) { static const char valid[] = { diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c index 547ed945dc..2f6caee8ec 100644 --- a/src/libsystemd/sd-bus/sd-bus.c +++ b/src/libsystemd/sd-bus/sd-bus.c @@ -37,6 +37,7 @@ #include "hostname-util.h" #include "io-util.h" #include "log-context.h" +#include "log.h" #include "macro.h" #include "memory-util.h" #include "missing_syscall.h" diff --git a/src/libsystemd/sd-bus/test-bus-vtable.c b/src/libsystemd/sd-bus/test-bus-vtable.c index fe122381e7..8a23f28931 100644 --- a/src/libsystemd/sd-bus/test-bus-vtable.c +++ b/src/libsystemd/sd-bus/test-bus-vtable.c @@ -13,6 +13,7 @@ #ifndef __cplusplus # include "bus-objects.h" +# include "log.h" #endif #include "test-vtable-data.h" diff --git a/src/libsystemd/sd-daemon/sd-daemon.c b/src/libsystemd/sd-daemon/sd-daemon.c index 4d3d678cb4..e867859bbe 100644 --- a/src/libsystemd/sd-daemon/sd-daemon.c +++ b/src/libsystemd/sd-daemon/sd-daemon.c @@ -20,6 +20,7 @@ #include "fs-util.h" #include "io-util.h" #include "iovec-util.h" +#include "log.h" #include "parse-util.h" #include "path-util.h" #include "process-util.h" diff --git a/src/libsystemd/sd-hwdb/sd-hwdb.c b/src/libsystemd/sd-hwdb/sd-hwdb.c index 90cf80f199..fce62e12e4 100644 --- a/src/libsystemd/sd-hwdb/sd-hwdb.c +++ b/src/libsystemd/sd-hwdb/sd-hwdb.c @@ -18,6 +18,7 @@ #include "fileio.h" #include "hashmap.h" #include "hwdb-internal.h" +#include "log.h" #include "nulstr-util.h" #include "string-util.h" #include "time-util.h" diff --git a/src/libsystemd/sd-id128/id128-util.c b/src/libsystemd/sd-id128/id128-util.c index 298d21ed29..44b0e1ddda 100644 --- a/src/libsystemd/sd-id128/id128-util.c +++ b/src/libsystemd/sd-id128/id128-util.c @@ -9,6 +9,7 @@ #include "hexdecoct.h" #include "id128-util.h" #include "io-util.h" +#include "log.h" #include "namespace-util.h" #include "process-util.h" #include "sha256.h" diff --git a/src/libsystemd/sd-id128/sd-id128.c b/src/libsystemd/sd-id128/sd-id128.c index c407b1c8c3..1f59f834ef 100644 --- a/src/libsystemd/sd-id128/sd-id128.c +++ b/src/libsystemd/sd-id128/sd-id128.c @@ -15,6 +15,7 @@ #include "id128-util.h" #include "io-util.h" #include "keyring-util.h" +#include "log.h" #include "macro.h" #include "missing_syscall.h" #include "path-util.h" diff --git a/src/libsystemd/sd-journal/journal-authenticate.c b/src/libsystemd/sd-journal/journal-authenticate.c index 64f5739ba8..35412fe39a 100644 --- a/src/libsystemd/sd-journal/journal-authenticate.c +++ b/src/libsystemd/sd-journal/journal-authenticate.c @@ -10,6 +10,7 @@ #include "journal-authenticate.h" #include "journal-def.h" #include "journal-file.h" +#include "log.h" #include "memory-util.h" #include "time-util.h" diff --git a/src/libsystemd/sd-journal/journal-file.c b/src/libsystemd/sd-journal/journal-file.c index 2f3e48c674..0420314894 100644 --- a/src/libsystemd/sd-journal/journal-file.c +++ b/src/libsystemd/sd-journal/journal-file.c @@ -22,6 +22,7 @@ #include "fs-util.h" #include "gcrypt-util.h" #include "id128-util.h" +#include "log.h" #include "journal-authenticate.h" #include "journal-def.h" #include "journal-file.h" diff --git a/src/libsystemd/sd-journal/journal-send.c b/src/libsystemd/sd-journal/journal-send.c index d55ca86b18..c4deb927cf 100644 --- a/src/libsystemd/sd-journal/journal-send.c +++ b/src/libsystemd/sd-journal/journal-send.c @@ -20,6 +20,7 @@ #include "fileio.h" #include "io-util.h" #include "iovec-util.h" +#include "log.h" #include "journal-send.h" #include "memfd-util.h" #include "missing_mman.h" diff --git a/src/libsystemd/sd-journal/journal-vacuum.c b/src/libsystemd/sd-journal/journal-vacuum.c index 7537f5be49..a048dd679a 100644 --- a/src/libsystemd/sd-journal/journal-vacuum.c +++ b/src/libsystemd/sd-journal/journal-vacuum.c @@ -11,6 +11,7 @@ #include "fd-util.h" #include "format-util.h" #include "fs-util.h" +#include "log.h" #include "journal-def.h" #include "journal-file.h" #include "journal-internal.h" diff --git a/src/libsystemd/sd-journal/journal-verify.c b/src/libsystemd/sd-journal/journal-verify.c index 0fb93340a6..af5a74d222 100644 --- a/src/libsystemd/sd-journal/journal-verify.c +++ b/src/libsystemd/sd-journal/journal-verify.c @@ -12,6 +12,7 @@ #include "fileio.h" #include "fs-util.h" #include "gcrypt-util.h" +#include "log.h" #include "journal-authenticate.h" #include "journal-def.h" #include "journal-file.h" diff --git a/src/libsystemd/sd-json/json-util.c b/src/libsystemd/sd-json/json-util.c index f1493e564c..83c098b0ce 100644 --- a/src/libsystemd/sd-json/json-util.c +++ b/src/libsystemd/sd-json/json-util.c @@ -8,6 +8,7 @@ #include "in-addr-util.h" #include "iovec-util.h" #include "json-util.h" +#include "log.h" #include "mountpoint-util.h" #include "parse-util.h" #include "path-util.h" diff --git a/src/libsystemd/sd-json/json-util.h b/src/libsystemd/sd-json/json-util.h index 7526d2bdf2..861c1876ff 100644 --- a/src/libsystemd/sd-json/json-util.h +++ b/src/libsystemd/sd-json/json-util.h @@ -5,6 +5,7 @@ #include "sd-json.h" +#include "log.h" #include "macro.h" #include "pidref.h" diff --git a/src/libsystemd/sd-json/sd-json.c b/src/libsystemd/sd-json/sd-json.c index f330045f5d..494f3379f7 100644 --- a/src/libsystemd/sd-json/sd-json.c +++ b/src/libsystemd/sd-json/sd-json.c @@ -25,6 +25,7 @@ #include "json-internal.h" #include "json-util.h" #include "ordered-set.h" +#include "log.h" #include "macro.h" #include "math-util.h" #include "memory-util.h" diff --git a/src/libsystemd/sd-login/sd-login.c b/src/libsystemd/sd-login/sd-login.c index 0fbc23afcb..571e19094b 100644 --- a/src/libsystemd/sd-login/sd-login.c +++ b/src/libsystemd/sd-login/sd-login.c @@ -18,6 +18,7 @@ #include "fs-util.h" #include "hostname-util.h" #include "io-util.h" +#include "log.h" #include "login-util.h" #include "macro.h" #include "parse-util.h" diff --git a/src/libsystemd/sd-netlink/netlink-genl.c b/src/libsystemd/sd-netlink/netlink-genl.c index 412480e19a..8d2269b54d 100644 --- a/src/libsystemd/sd-netlink/netlink-genl.c +++ b/src/libsystemd/sd-netlink/netlink-genl.c @@ -5,6 +5,7 @@ #include "sd-netlink.h" #include "alloc-util.h" +#include "log.h" #include "netlink-genl.h" #include "netlink-internal.h" #include "netlink-types.h" diff --git a/src/libsystemd/sd-netlink/netlink-message-nfnl.c b/src/libsystemd/sd-netlink/netlink-message-nfnl.c index fd3055d879..1ce1adb5cd 100644 --- a/src/libsystemd/sd-netlink/netlink-message-nfnl.c +++ b/src/libsystemd/sd-netlink/netlink-message-nfnl.c @@ -8,6 +8,7 @@ #include "sd-netlink.h" #include "iovec-util.h" +#include "log.h" #include "netlink-internal.h" #include "netlink-types.h" #include "netlink-util.h" diff --git a/src/libsystemd/sd-netlink/netlink-message-rtnl.c b/src/libsystemd/sd-netlink/netlink-message-rtnl.c index 06f246668a..9143e29358 100644 --- a/src/libsystemd/sd-netlink/netlink-message-rtnl.c +++ b/src/libsystemd/sd-netlink/netlink-message-rtnl.c @@ -11,6 +11,7 @@ #include "sd-netlink.h" #include "format-util.h" +#include "log.h" #include "netlink-internal.h" #include "netlink-types.h" #include "netlink-util.h" diff --git a/src/libsystemd/sd-netlink/netlink-message.c b/src/libsystemd/sd-netlink/netlink-message.c index 3df0327444..eb88ae5e2b 100644 --- a/src/libsystemd/sd-netlink/netlink-message.c +++ b/src/libsystemd/sd-netlink/netlink-message.c @@ -8,6 +8,7 @@ #include "alloc-util.h" #include "format-util.h" +#include "log.h" #include "memory-util.h" #include "netlink-internal.h" #include "netlink-types.h" diff --git a/src/libsystemd/sd-netlink/netlink-slot.c b/src/libsystemd/sd-netlink/netlink-slot.c index e8903b1922..145c376ca4 100644 --- a/src/libsystemd/sd-netlink/netlink-slot.c +++ b/src/libsystemd/sd-netlink/netlink-slot.c @@ -5,6 +5,7 @@ #include "sd-netlink.h" #include "alloc-util.h" +#include "log.h" #include "netlink-internal.h" #include "netlink-slot.h" #include "string-util.h" diff --git a/src/libsystemd/sd-netlink/netlink-socket.c b/src/libsystemd/sd-netlink/netlink-socket.c index 90522b509a..1b098cadee 100644 --- a/src/libsystemd/sd-netlink/netlink-socket.c +++ b/src/libsystemd/sd-netlink/netlink-socket.c @@ -11,6 +11,7 @@ #include "fd-util.h" #include "format-util.h" #include "iovec-util.h" +#include "log.h" #include "netlink-internal.h" #include "netlink-types.h" #include "socket-util.h" diff --git a/src/libsystemd/sd-netlink/netlink-util.c b/src/libsystemd/sd-netlink/netlink-util.c index 19097e2f92..2a56182750 100644 --- a/src/libsystemd/sd-netlink/netlink-util.c +++ b/src/libsystemd/sd-netlink/netlink-util.c @@ -4,6 +4,7 @@ #include "fd-util.h" #include "iovec-util.h" +#include "log.h" #include "memory-util.h" #include "netlink-internal.h" #include "netlink-util.h" @@ -131,6 +132,17 @@ int rtnl_resolve_ifname_full( return -ENODEV; } +int rtnl_resolve_interface_or_warn(sd_netlink **rtnl, const char *name) { + int r; + + assert(name); + + r = rtnl_resolve_interface(rtnl, name); + if (r < 0) + return log_error_errno(r, "Failed to resolve interface \"%s\": %m", name); + return r; +} + static int set_link_name(sd_netlink *rtnl, int ifindex, const char *name) { _cleanup_(sd_netlink_message_unrefp) sd_netlink_message *message = NULL; int r; diff --git a/src/libsystemd/sd-netlink/netlink-util.h b/src/libsystemd/sd-netlink/netlink-util.h index 752c84c824..25b27291ba 100644 --- a/src/libsystemd/sd-netlink/netlink-util.h +++ b/src/libsystemd/sd-netlink/netlink-util.h @@ -101,16 +101,7 @@ static inline int rtnl_resolve_ifname(sd_netlink **rtnl, const char *name) { static inline int rtnl_resolve_interface(sd_netlink **rtnl, const char *name) { return rtnl_resolve_ifname_full(rtnl, _RESOLVE_IFNAME_ALL, name, NULL, NULL); } -static inline int rtnl_resolve_interface_or_warn(sd_netlink **rtnl, const char *name) { - int r; - - assert(name); - - r = rtnl_resolve_interface(rtnl, name); - if (r < 0) - return log_error_errno(r, "Failed to resolve interface \"%s\": %m", name); - return r; -} +int rtnl_resolve_interface_or_warn(sd_netlink **rtnl, const char *name); int rtnl_set_link_alternative_names(sd_netlink **rtnl, int ifindex, char* const *alternative_names); int rtnl_set_link_alternative_names_by_ifname(sd_netlink **rtnl, const char *ifname, char* const *alternative_names); diff --git a/src/libsystemd/sd-netlink/sd-netlink.c b/src/libsystemd/sd-netlink/sd-netlink.c index e6bd69f2de..d71a1c579c 100644 --- a/src/libsystemd/sd-netlink/sd-netlink.c +++ b/src/libsystemd/sd-netlink/sd-netlink.c @@ -8,6 +8,7 @@ #include "fd-util.h" #include "hashmap.h" #include "io-util.h" +#include "log.h" #include "macro.h" #include "netlink-genl.h" #include "netlink-internal.h" diff --git a/src/libsystemd/sd-path/sd-path.c b/src/libsystemd/sd-path/sd-path.c index d536352038..b8fd0ae0a7 100644 --- a/src/libsystemd/sd-path/sd-path.c +++ b/src/libsystemd/sd-path/sd-path.c @@ -7,6 +7,7 @@ #include "fd-util.h" #include "fileio.h" #include "fs-util.h" +#include "log.h" #include "network-util.h" #include "nulstr-util.h" #include "path-lookup.h" diff --git a/src/libsystemd/sd-resolve/sd-resolve.c b/src/libsystemd/sd-resolve/sd-resolve.c index b01f600ba6..81052e7ec1 100644 --- a/src/libsystemd/sd-resolve/sd-resolve.c +++ b/src/libsystemd/sd-resolve/sd-resolve.c @@ -22,6 +22,7 @@ #include "io-util.h" #include "iovec-util.h" #include "list.h" +#include "log.h" #include "memory-util.h" #include "missing_syscall.h" #include "process-util.h" diff --git a/src/libsystemd/sd-varlink/sd-varlink-idl.c b/src/libsystemd/sd-varlink/sd-varlink-idl.c index c7126ac6e6..06062783d7 100644 --- a/src/libsystemd/sd-varlink/sd-varlink-idl.c +++ b/src/libsystemd/sd-varlink/sd-varlink-idl.c @@ -4,6 +4,7 @@ #include "ansi-color.h" #include "json-util.h" +#include "log.h" #include "memstream-util.h" #include "set.h" #include "strv.h" diff --git a/src/libsystemd/sd-varlink/sd-varlink.c b/src/libsystemd/sd-varlink/sd-varlink.c index c910a41354..57d106a390 100644 --- a/src/libsystemd/sd-varlink/sd-varlink.c +++ b/src/libsystemd/sd-varlink/sd-varlink.c @@ -17,6 +17,7 @@ #include "iovec-util.h" #include "json-util.h" #include "list.h" +#include "log.h" #include "mkdir.h" #include "path-util.h" #include "process-util.h" diff --git a/src/libsystemd/sd-varlink/varlink-util.c b/src/libsystemd/sd-varlink/varlink-util.c index 18adf93a59..438ef6bd7a 100644 --- a/src/libsystemd/sd-varlink/varlink-util.c +++ b/src/libsystemd/sd-varlink/varlink-util.c @@ -2,6 +2,7 @@ #include "alloc-util.h" #include "errno-util.h" +#include "log.h" #include "string-util.h" #include "varlink-internal.h" #include "varlink-util.h" diff --git a/src/libudev/libudev-hwdb.c b/src/libudev/libudev-hwdb.c index ee87c4329a..7144905e85 100644 --- a/src/libudev/libudev-hwdb.c +++ b/src/libudev/libudev-hwdb.c @@ -7,6 +7,7 @@ #include "alloc-util.h" #include "hwdb-util.h" #include "libudev-list-internal.h" +#include "log.h" /** * SECTION:libudev-hwdb diff --git a/src/libudev/libudev.c b/src/libudev/libudev.c index 26a9f74eaa..a6004e3999 100644 --- a/src/libudev/libudev.c +++ b/src/libudev/libudev.c @@ -10,6 +10,7 @@ #include "alloc-util.h" #include "fd-util.h" +#include "log.h" #include "string-util.h" /** diff --git a/src/locale/localed-util.c b/src/locale/localed-util.c index d43ee48e12..b477aeb253 100644 --- a/src/locale/localed-util.c +++ b/src/locale/localed-util.c @@ -13,6 +13,7 @@ #include "fileio.h" #include "kbd-util.h" #include "localed-util.h" +#include "log.h" #include "mkdir-label.h" #include "process-util.h" #include "stat-util.h" diff --git a/src/locale/localed-util.h b/src/locale/localed-util.h index 8a279c5e56..a5bd78a4f7 100644 --- a/src/locale/localed-util.h +++ b/src/locale/localed-util.h @@ -2,6 +2,7 @@ #pragma once #include +#include #include "sd-bus.h" @@ -29,7 +30,6 @@ int x11_context_verify_and_warn(const X11Context *xc, int log_level, sd_bus_erro static inline int x11_context_verify(const X11Context *xc) { return x11_context_verify_and_warn(xc, LOG_DEBUG, NULL); } - X11Context *context_get_x11_context(Context *c); int vc_context_verify_and_warn(const VCContext *vc, int log_level, sd_bus_error *error); diff --git a/src/locale/localed.c b/src/locale/localed.c index e9177d3ea1..5fc45819ca 100644 --- a/src/locale/localed.c +++ b/src/locale/localed.c @@ -18,6 +18,7 @@ #include "daemon-util.h" #include "kbd-util.h" #include "localed-util.h" +#include "log.h" #include "macro.h" #include "main-func.h" #include "path-util.h" diff --git a/src/login/inhibit.c b/src/login/inhibit.c index bb99ae9c6d..276a3ba70d 100644 --- a/src/login/inhibit.c +++ b/src/login/inhibit.c @@ -16,6 +16,7 @@ #include "fd-util.h" #include "format-table.h" #include "format-util.h" +#include "log.h" #include "main-func.h" #include "pager.h" #include "pretty-print.h" diff --git a/src/login/pam_systemd_loadkey.c b/src/login/pam_systemd_loadkey.c index f62007d155..eaaff971da 100644 --- a/src/login/pam_systemd_loadkey.c +++ b/src/login/pam_systemd_loadkey.c @@ -8,6 +8,7 @@ #include #include "keyring-util.h" +#include "log.h" #include "macro.h" #include "missing_syscall.h" #include "nulstr-util.h" diff --git a/src/measure/measure.c b/src/measure/measure.c index 328b306fea..b81bc2453c 100644 --- a/src/measure/measure.c +++ b/src/measure/measure.c @@ -12,6 +12,7 @@ #include "fd-util.h" #include "fileio.h" #include "hexdecoct.h" +#include "log.h" #include "main-func.h" #include "memstream-util.h" #include "openssl-util.h" diff --git a/src/mountfsd/mountfsd-manager.c b/src/mountfsd/mountfsd-manager.c index 215dcb5b2f..9b10f15937 100644 --- a/src/mountfsd/mountfsd-manager.c +++ b/src/mountfsd/mountfsd-manager.c @@ -9,6 +9,7 @@ #include "event-util.h" #include "fd-util.h" #include "fs-util.h" +#include "log.h" #include "mkdir.h" #include "mountfsd-manager.h" #include "process-util.h" diff --git a/src/network/networkctl-address-label.c b/src/network/networkctl-address-label.c index cb7d3d7c27..739c1d2e83 100644 --- a/src/network/networkctl-address-label.c +++ b/src/network/networkctl-address-label.c @@ -6,6 +6,7 @@ #include "format-table.h" #include "in-addr-util.h" +#include "log.h" #include "networkctl.h" #include "networkctl-address-label.h" diff --git a/src/network/networkctl-config-file.c b/src/network/networkctl-config-file.c index 7ef7668f30..782cc6a4e8 100644 --- a/src/network/networkctl-config-file.c +++ b/src/network/networkctl-config-file.c @@ -13,6 +13,7 @@ #include "bus-wait-for-jobs.h" #include "conf-files.h" #include "edit-util.h" +#include "log.h" #include "mkdir-label.h" #include "netlink-util.h" #include "network-util.h" diff --git a/src/network/networkctl-description.c b/src/network/networkctl-description.c index 410751f9e7..8c52a46e7f 100644 --- a/src/network/networkctl-description.c +++ b/src/network/networkctl-description.c @@ -6,6 +6,7 @@ #include "bus-util.h" #include "glob-util.h" #include "json-util.h" +#include "log.h" #include "networkctl.h" #include "networkctl-description.h" #include "networkctl-util.h" diff --git a/src/network/networkctl-dump-util.c b/src/network/networkctl-dump-util.c index 1e497a5747..ba554ae041 100644 --- a/src/network/networkctl-dump-util.c +++ b/src/network/networkctl-dump-util.c @@ -3,6 +3,7 @@ #include "format-ifname.h" #include "in-addr-util.h" #include "local-addresses.h" +#include "log.h" #include "networkctl-dump-util.h" #include "stdio-util.h" #include "strv.h" diff --git a/src/network/networkctl-journal.c b/src/network/networkctl-journal.c index 2dc536c1eb..58e67d9ebb 100644 --- a/src/network/networkctl-journal.c +++ b/src/network/networkctl-journal.c @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #include "journal-internal.h" +#include "log.h" #include "logs-show.h" #include "networkctl.h" #include "networkctl-journal.h" diff --git a/src/network/networkctl-lldp.c b/src/network/networkctl-lldp.c index 43ffbabb9f..ef2f3ffef7 100644 --- a/src/network/networkctl-lldp.c +++ b/src/network/networkctl-lldp.c @@ -2,6 +2,7 @@ #include "alloc-util.h" #include "json-util.h" +#include "log.h" #include "networkctl.h" #include "networkctl-dump-util.h" #include "networkctl-lldp.h" diff --git a/src/network/networkctl-misc.c b/src/network/networkctl-misc.c index 8e1fbd8843..1f6c6fdcb2 100644 --- a/src/network/networkctl-misc.c +++ b/src/network/networkctl-misc.c @@ -6,6 +6,7 @@ #include "bus-locator.h" #include "fd-util.h" #include "format-ifname.h" +#include "log.h" #include "netlink-util.h" #include "networkctl.h" #include "networkctl-misc.h" diff --git a/src/network/networkctl-status-system.c b/src/network/networkctl-status-system.c index dbdaa97a19..a607e89264 100644 --- a/src/network/networkctl-status-system.c +++ b/src/network/networkctl-status-system.c @@ -4,6 +4,7 @@ #include "fs-util.h" #include "glyph-util.h" +#include "log.h" #include "networkctl.h" #include "networkctl-dump-util.h" #include "networkctl-journal.h" diff --git a/src/network/networkctl-util.c b/src/network/networkctl-util.c index 2f0fc33b07..68499fc529 100644 --- a/src/network/networkctl-util.c +++ b/src/network/networkctl-util.c @@ -4,6 +4,7 @@ #include #include "ansi-color.h" +#include "log.h" #include "networkctl.h" #include "networkctl-util.h" #include "stdio-util.h" diff --git a/src/network/networkctl.c b/src/network/networkctl.c index 5c85135c9b..829618e811 100644 --- a/src/network/networkctl.c +++ b/src/network/networkctl.c @@ -3,6 +3,7 @@ #include #include "build.h" +#include "log.h" #include "logs-show.h" #include "main-func.h" #include "networkctl.h" diff --git a/src/network/wait-online/wait-online.c b/src/network/wait-online/wait-online.c index 467d2e7da7..a8b13264be 100644 --- a/src/network/wait-online/wait-online.c +++ b/src/network/wait-online/wait-online.c @@ -8,6 +8,7 @@ #include "build.h" #include "daemon-util.h" +#include "log.h" #include "main-func.h" #include "manager.h" #include "parse-argument.h" diff --git a/src/nspawn/nspawn-bind-user.c b/src/nspawn/nspawn-bind-user.c index 3e402ac33a..bb5969c425 100644 --- a/src/nspawn/nspawn-bind-user.c +++ b/src/nspawn/nspawn-bind-user.c @@ -5,6 +5,7 @@ #include "fileio.h" #include "format-util.h" #include "json-util.h" +#include "log.h" #include "nspawn.h" #include "nspawn-bind-user.h" #include "path-util.h" diff --git a/src/nspawn/nspawn-setuid.c b/src/nspawn/nspawn-setuid.c index e350b22806..950582b225 100644 --- a/src/nspawn/nspawn-setuid.c +++ b/src/nspawn/nspawn-setuid.c @@ -9,6 +9,7 @@ #include "errno.h" #include "fd-util.h" #include "fileio.h" +#include "log.h" #include "mkdir.h" #include "nspawn-setuid.h" #include "process-util.h" diff --git a/src/nsresourced/nsresourced-manager.c b/src/nsresourced/nsresourced-manager.c index b5e4376723..9849d63b0a 100644 --- a/src/nsresourced/nsresourced-manager.c +++ b/src/nsresourced/nsresourced-manager.c @@ -15,6 +15,7 @@ #include "event-util.h" #include "fd-util.h" #include "fs-util.h" +#include "log.h" #include "mkdir.h" #include "nsresourced-manager.h" #include "parse-util.h" diff --git a/src/nsresourced/test-userns-restrict.c b/src/nsresourced/test-userns-restrict.c index 59ca1cabbb..1dcf0bd91b 100644 --- a/src/nsresourced/test-userns-restrict.c +++ b/src/nsresourced/test-userns-restrict.c @@ -4,6 +4,7 @@ #include #include "fd-util.h" +#include "log.h" #include "main-func.h" #include "missing_syscall.h" #include "namespace-util.h" diff --git a/src/nsresourced/userns-restrict.c b/src/nsresourced/userns-restrict.c index cd53463b74..cb48ffbe79 100644 --- a/src/nsresourced/userns-restrict.c +++ b/src/nsresourced/userns-restrict.c @@ -1,5 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ +#include "log.h" #include "userns-restrict.h" #if HAVE_VMLINUX_H diff --git a/src/oom/oomctl.c b/src/oom/oomctl.c index b206a78c3d..79adc01415 100644 --- a/src/oom/oomctl.c +++ b/src/oom/oomctl.c @@ -7,6 +7,7 @@ #include "bus-error.h" #include "bus-locator.h" #include "bus-message-util.h" +#include "log.h" #include "main-func.h" #include "pretty-print.h" #include "terminal-util.h" diff --git a/src/oom/oomd-util.c b/src/oom/oomd-util.c index e1076a6480..b6b6c2a2f1 100644 --- a/src/oom/oomd-util.c +++ b/src/oom/oomd-util.c @@ -7,6 +7,7 @@ #include "fd-util.h" #include "fileio.h" #include "format-util.h" +#include "log.h" #include "memstream-util.h" #include "oomd-util.h" #include "parse-util.h" diff --git a/src/pcrlock/pcrlock-firmware.c b/src/pcrlock/pcrlock-firmware.c index 059c87c622..34cb82cbca 100644 --- a/src/pcrlock/pcrlock-firmware.c +++ b/src/pcrlock/pcrlock-firmware.c @@ -2,6 +2,7 @@ #include +#include "log.h" #include "pcrlock-firmware.h" #include "unaligned.h" diff --git a/src/portable/portabled-operation.c b/src/portable/portabled-operation.c index 53f33e52aa..a694e5e64d 100644 --- a/src/portable/portabled-operation.c +++ b/src/portable/portabled-operation.c @@ -4,6 +4,7 @@ #include "alloc-util.h" #include "fd-util.h" +#include "log.h" #include "portabled-operation.h" #include "process-util.h" diff --git a/src/ptyfwd/ptyfwd-tool.c b/src/ptyfwd/ptyfwd-tool.c index c59ea34079..26bb295b3f 100644 --- a/src/ptyfwd/ptyfwd-tool.c +++ b/src/ptyfwd/ptyfwd-tool.c @@ -7,6 +7,7 @@ #include "build.h" #include "event-util.h" #include "fd-util.h" +#include "log.h" #include "main-func.h" #include "pretty-print.h" #include "ptyfwd.h" diff --git a/src/resolve/resolvconf-compat.c b/src/resolve/resolvconf-compat.c index 218f2affc5..97749d80c2 100644 --- a/src/resolve/resolvconf-compat.c +++ b/src/resolve/resolvconf-compat.c @@ -9,6 +9,7 @@ #include "dns-domain.h" #include "extract-word.h" #include "fileio.h" +#include "log.h" #include "parse-util.h" #include "pretty-print.h" #include "resolvconf-compat.h" diff --git a/src/resolve/resolved-dns-answer.c b/src/resolve/resolved-dns-answer.c index d4c3922971..fd88a863f8 100644 --- a/src/resolve/resolved-dns-answer.c +++ b/src/resolve/resolved-dns-answer.c @@ -4,6 +4,7 @@ #include "alloc-util.h" #include "dns-domain.h" +#include "log.h" #include "random-util.h" #include "resolved-dns-answer.h" #include "resolved-dns-dnssec.h" diff --git a/src/resolve/resolved-dns-dnssec.c b/src/resolve/resolved-dns-dnssec.c index 5f0152c278..ab2de46a4f 100644 --- a/src/resolve/resolved-dns-dnssec.c +++ b/src/resolve/resolved-dns-dnssec.c @@ -6,6 +6,7 @@ #include "fileio.h" #include "gcrypt-util.h" #include "hexdecoct.h" +#include "log.h" #include "memory-util.h" #include "memstream-util.h" #include "openssl-util.h" diff --git a/src/resolve/resolved-dns-packet.c b/src/resolve/resolved-dns-packet.c index 049262e6da..1c72ea98ee 100644 --- a/src/resolve/resolved-dns-packet.c +++ b/src/resolve/resolved-dns-packet.c @@ -7,6 +7,7 @@ #include "alloc-util.h" #include "dns-domain.h" #include "escape.h" +#include "log.h" #include "memory-util.h" #include "resolved-dns-packet.h" #include "set.h" diff --git a/src/resolve/resolved-dns-question.c b/src/resolve/resolved-dns-question.c index 84ddb999f4..6fb778860c 100644 --- a/src/resolve/resolved-dns-question.c +++ b/src/resolve/resolved-dns-question.c @@ -3,6 +3,7 @@ #include "alloc-util.h" #include "dns-domain.h" #include "dns-type.h" +#include "log.h" #include "resolved-dns-question.h" #include "socket-util.h" diff --git a/src/resolve/resolved-dns-rr.c b/src/resolve/resolved-dns-rr.c index a78085d0d4..e7d797c506 100644 --- a/src/resolve/resolved-dns-rr.c +++ b/src/resolve/resolved-dns-rr.c @@ -8,6 +8,7 @@ #include "escape.h" #include "hexdecoct.h" #include "json-util.h" +#include "log.h" #include "memory-util.h" #include "resolved-dns-dnssec.h" #include "resolved-dns-packet.h" diff --git a/src/resolve/resolved-dns-trust-anchor.c b/src/resolve/resolved-dns-trust-anchor.c index 416eb94294..1384363717 100644 --- a/src/resolve/resolved-dns-trust-anchor.c +++ b/src/resolve/resolved-dns-trust-anchor.c @@ -9,6 +9,7 @@ #include "fd-util.h" #include "fileio.h" #include "hexdecoct.h" +#include "log.h" #include "nulstr-util.h" #include "parse-util.h" #include "resolved-dns-dnssec.h" diff --git a/src/resolve/resolved-util.c b/src/resolve/resolved-util.c index 8c604c96f6..003f07a6d5 100644 --- a/src/resolve/resolved-util.c +++ b/src/resolve/resolved-util.c @@ -5,6 +5,7 @@ #include "hostname-setup.h" #include "hostname-util.h" #include "idn-util.h" +#include "log.h" #include "resolved-util.h" #include "utf8.h" diff --git a/src/run/run.c b/src/run/run.c index cc00f93041..5464f6af9a 100644 --- a/src/run/run.c +++ b/src/run/run.c @@ -32,6 +32,7 @@ #include "fs-util.h" #include "hostname-setup.h" #include "hostname-util.h" +#include "log.h" #include "main-func.h" #include "osc-context.h" #include "parse-argument.h" diff --git a/src/shared/acl-util.c b/src/shared/acl-util.c index 7bfe02573a..3c9fe0d45c 100644 --- a/src/shared/acl-util.c +++ b/src/shared/acl-util.c @@ -8,6 +8,7 @@ #include "acl-util.h" #include "alloc-util.h" #include "errno-util.h" +#include "log.h" #include "string-util.h" #include "strv.h" #include "user-util.h" diff --git a/src/shared/apparmor-util.c b/src/shared/apparmor-util.c index a040ea7a89..cddf23073e 100644 --- a/src/shared/apparmor-util.c +++ b/src/shared/apparmor-util.c @@ -5,6 +5,7 @@ #include "alloc-util.h" #include "apparmor-util.h" #include "fileio.h" +#include "log.h" #include "parse-util.h" #if HAVE_APPARMOR diff --git a/src/shared/binfmt-util.c b/src/shared/binfmt-util.c index a26175474b..c96ad24b3d 100644 --- a/src/shared/binfmt-util.c +++ b/src/shared/binfmt-util.c @@ -9,6 +9,7 @@ #include "fd-util.h" #include "fileio.h" #include "fs-util.h" +#include "log.h" #include "missing_magic.h" #include "stat-util.h" diff --git a/src/shared/boot-entry.c b/src/shared/boot-entry.c index 72d3cbea98..ea474d0dca 100644 --- a/src/shared/boot-entry.c +++ b/src/shared/boot-entry.c @@ -5,6 +5,7 @@ #include "fd-util.h" #include "fileio.h" #include "id128-util.h" +#include "log.h" #include "os-util.h" #include "path-util.h" #include "string-table.h" diff --git a/src/shared/bootspec.c b/src/shared/bootspec.c index c0f97aff0e..6635076b23 100644 --- a/src/shared/bootspec.c +++ b/src/shared/bootspec.c @@ -14,6 +14,7 @@ #include "fd-util.h" #include "fileio.h" #include "find-esp.h" +#include "log.h" #include "path-util.h" #include "pe-binary.h" #include "pretty-print.h" diff --git a/src/shared/btrfs-util.c b/src/shared/btrfs-util.c index ec19905ba1..713ecb4eb5 100644 --- a/src/shared/btrfs-util.c +++ b/src/shared/btrfs-util.c @@ -23,6 +23,7 @@ #include "fileio.h" #include "fs-util.h" #include "io-util.h" +#include "log.h" #include "macro.h" #include "missing_fs.h" #include "path-util.h" @@ -510,6 +511,12 @@ finish: return 0; } +int btrfs_log_dev_root(int level, int ret, const char *p) { + return log_full_errno(level, ret, + "File system behind %s is reported by btrfs to be backed by pseudo-device /dev/root, which is not a valid userspace accessible device node. " + "Cannot determine correct backing block device.", p); +} + int btrfs_qgroup_get_quota(const char *path, uint64_t qgroupid, BtrfsQuotaInfo *ret) { _cleanup_close_ int fd = -EBADF; diff --git a/src/shared/btrfs-util.h b/src/shared/btrfs-util.h index 6108a264c0..58380029b0 100644 --- a/src/shared/btrfs-util.h +++ b/src/shared/btrfs-util.h @@ -130,11 +130,7 @@ int btrfs_qgroup_find_parents(int fd, uint64_t qgroupid, uint64_t **ret); int btrfs_qgroup_get_quota_fd(int fd, uint64_t qgroupid, BtrfsQuotaInfo *quota); int btrfs_qgroup_get_quota(const char *path, uint64_t qgroupid, BtrfsQuotaInfo *quota); -static inline int btrfs_log_dev_root(int level, int ret, const char *p) { - return log_full_errno(level, ret, - "File system behind %s is reported by btrfs to be backed by pseudo-device /dev/root, which is not a valid userspace accessible device node. " - "Cannot determine correct backing block device.", p); -} +int btrfs_log_dev_root(int level, int ret, const char *p); static inline bool btrfs_might_be_subvol(const struct stat *st) { if (!st) diff --git a/src/shared/bus-get-properties.c b/src/shared/bus-get-properties.c index 696671a916..de23611ac4 100644 --- a/src/shared/bus-get-properties.c +++ b/src/shared/bus-get-properties.c @@ -2,6 +2,7 @@ #include "bus-get-properties.h" #include "bus-message-util.h" +#include "log.h" #include "rlimit-util.h" #include "stdio-util.h" #include "string-util.h" diff --git a/src/shared/bus-map-properties.c b/src/shared/bus-map-properties.c index 18d83c336f..4f966ccc24 100644 --- a/src/shared/bus-map-properties.c +++ b/src/shared/bus-map-properties.c @@ -1,11 +1,12 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ -#include "bus-map-properties.h" #include "alloc-util.h" -#include "bus-util.h" -#include "strv.h" -#include "bus-message.h" +#include "bus-map-properties.h" #include "bus-message-util.h" +#include "bus-message.h" +#include "bus-util.h" +#include "log.h" +#include "strv.h" int bus_map_id128(sd_bus *bus, const char *member, sd_bus_message *m, sd_bus_error *error, void *userdata) { sd_id128_t *p = userdata; diff --git a/src/shared/bus-object.c b/src/shared/bus-object.c index 4ed5215e3d..44984a4504 100644 --- a/src/shared/bus-object.c +++ b/src/shared/bus-object.c @@ -2,6 +2,7 @@ #include "bus-introspect.h" #include "bus-object.h" +#include "log.h" #include "macro.h" #include "string-util.h" #include "strv.h" diff --git a/src/shared/bus-polkit.c b/src/shared/bus-polkit.c index 9cd0d6c677..37a25db81a 100644 --- a/src/shared/bus-polkit.c +++ b/src/shared/bus-polkit.c @@ -4,6 +4,7 @@ #include "bus-message.h" #include "bus-polkit.h" #include "bus-util.h" +#include "log.h" #include "process-util.h" #include "strv.h" #include "user-util.h" diff --git a/src/shared/bus-print-properties.c b/src/shared/bus-print-properties.c index 5857fde5ad..2e36f8ed79 100644 --- a/src/shared/bus-print-properties.c +++ b/src/shared/bus-print-properties.c @@ -5,6 +5,7 @@ #include "cgroup-util.h" #include "escape.h" #include "mountpoint-util.h" +#include "log.h" #include "nsflags.h" #include "parse-util.h" #include "stdio-util.h" diff --git a/src/shared/bus-unit-procs.c b/src/shared/bus-unit-procs.c index 19139403b8..c47b8b23b4 100644 --- a/src/shared/bus-unit-procs.c +++ b/src/shared/bus-unit-procs.c @@ -6,6 +6,7 @@ #include "glyph-util.h" #include "hashmap.h" #include "list.h" +#include "log.h" #include "macro.h" #include "path-util.h" #include "process-util.h" diff --git a/src/shared/bus-util.c b/src/shared/bus-util.c index 05926771d2..a2b6a48003 100644 --- a/src/shared/bus-util.c +++ b/src/shared/bus-util.c @@ -24,6 +24,7 @@ #include "env-util.h" #include "fd-util.h" #include "format-util.h" +#include "log.h" #include "memfd-util.h" #include "memstream-util.h" #include "path-util.h" diff --git a/src/shared/bus-util.h b/src/shared/bus-util.h index 63c3ba5ee3..7f890e4b9f 100644 --- a/src/shared/bus-util.h +++ b/src/shared/bus-util.h @@ -10,6 +10,7 @@ #include "sd-event.h" #include "errno-util.h" +#include "log.h" #include "macro.h" #include "pidref.h" #include "runtime-scope.h" diff --git a/src/shared/bus-wait-for-jobs.c b/src/shared/bus-wait-for-jobs.c index f28b42b563..762aa87049 100644 --- a/src/shared/bus-wait-for-jobs.c +++ b/src/shared/bus-wait-for-jobs.c @@ -5,6 +5,7 @@ #include "bus-util.h" #include "bus-wait-for-jobs.h" #include "escape.h" +#include "log.h" #include "set.h" #include "strv.h" #include "unit-def.h" diff --git a/src/shared/bus-wait-for-units.c b/src/shared/bus-wait-for-units.c index 20bb7d0405..260b84ada0 100644 --- a/src/shared/bus-wait-for-units.c +++ b/src/shared/bus-wait-for-units.c @@ -4,6 +4,7 @@ #include "bus-map-properties.h" #include "bus-wait-for-units.h" #include "hashmap.h" +#include "log.h" #include "string-util.h" #include "strv.h" #include "unit-def.h" diff --git a/src/shared/calendarspec.c b/src/shared/calendarspec.c index 01bc10f97e..c95898507c 100644 --- a/src/shared/calendarspec.c +++ b/src/shared/calendarspec.c @@ -14,6 +14,7 @@ #include "errno-util.h" #include "fd-util.h" #include "fileio.h" +#include "log.h" #include "macro.h" #include "memstream-util.h" #include "parse-util.h" diff --git a/src/shared/cgroup-setup.c b/src/shared/cgroup-setup.c index 51f04e8c6b..d804a7746b 100644 --- a/src/shared/cgroup-setup.c +++ b/src/shared/cgroup-setup.c @@ -8,6 +8,7 @@ #include "fd-util.h" #include "fileio.h" #include "fs-util.h" +#include "log.h" #include "missing_magic.h" #include "mkdir.h" #include "parse-util.h" diff --git a/src/shared/cgroup-show.c b/src/shared/cgroup-show.c index 35bcac0f61..0331ce2323 100644 --- a/src/shared/cgroup-show.c +++ b/src/shared/cgroup-show.c @@ -18,6 +18,7 @@ #include "format-util.h" #include "hostname-util.h" #include "locale-util.h" +#include "log.h" #include "macro.h" #include "nulstr-util.h" #include "output-mode.h" diff --git a/src/shared/common-signal.c b/src/shared/common-signal.c index d6541bd06e..e3f9250361 100644 --- a/src/shared/common-signal.c +++ b/src/shared/common-signal.c @@ -3,6 +3,7 @@ #include "common-signal.h" #include "fd-util.h" #include "fileio.h" +#include "log.h" #include "memstream-util.h" #include "process-util.h" #include "signal-util.h" diff --git a/src/shared/copy.c b/src/shared/copy.c index 599e7f2fd1..c662853ac8 100644 --- a/src/shared/copy.c +++ b/src/shared/copy.c @@ -20,6 +20,7 @@ #include "fileio.h" #include "fs-util.h" #include "io-util.h" +#include "log.h" #include "macro.h" #include "missing_fs.h" #include "missing_syscall.h" diff --git a/src/shared/coredump-util.c b/src/shared/coredump-util.c index 740fd43894..c27678f011 100644 --- a/src/shared/coredump-util.c +++ b/src/shared/coredump-util.c @@ -5,6 +5,7 @@ #include "coredump-util.h" #include "extract-word.h" #include "fileio.h" +#include "log.h" #include "stdio-util.h" #include "string-table.h" #include "unaligned.h" diff --git a/src/shared/creds-util.c b/src/shared/creds-util.c index e074c8b246..a4284075ad 100644 --- a/src/shared/creds-util.c +++ b/src/shared/creds-util.c @@ -25,6 +25,7 @@ #include "fs-util.h" #include "io-util.h" #include "json-util.h" +#include "log.h" #include "memory-util.h" #include "mkdir-label.h" #include "openssl-util.h" diff --git a/src/shared/dns-domain.c b/src/shared/dns-domain.c index f614392262..a310438b3c 100644 --- a/src/shared/dns-domain.c +++ b/src/shared/dns-domain.c @@ -13,6 +13,7 @@ #include "hostname-util.h" #include "idn-util.h" #include "in-addr-util.h" +#include "log.h" #include "macro.h" #include "parse-util.h" #include "string-util.h" diff --git a/src/shared/edit-util.c b/src/shared/edit-util.c index d08faed661..56c6133db7 100644 --- a/src/shared/edit-util.c +++ b/src/shared/edit-util.c @@ -9,6 +9,7 @@ #include "fd-util.h" #include "fileio.h" #include "fs-util.h" +#include "log.h" #include "mkdir-label.h" #include "path-util.h" #include "process-util.h" diff --git a/src/shared/efi-api.c b/src/shared/efi-api.c index 37720f896b..4454b444bb 100644 --- a/src/shared/efi-api.c +++ b/src/shared/efi-api.c @@ -9,6 +9,7 @@ #include "efivars.h" #include "fd-util.h" #include "fileio.h" +#include "log.h" #include "sort-util.h" #include "stat-util.h" #include "stdio-util.h" diff --git a/src/shared/efi-loader.c b/src/shared/efi-loader.c index 3f551b6b1c..75d935847a 100644 --- a/src/shared/efi-loader.c +++ b/src/shared/efi-loader.c @@ -4,6 +4,7 @@ #include "efi-api.h" #include "efi-loader.h" #include "env-util.h" +#include "log.h" #include "parse-util.h" #include "path-util.h" #include "stat-util.h" diff --git a/src/shared/efi-loader.h b/src/shared/efi-loader.h index 4c307f2f26..48a81daf79 100644 --- a/src/shared/efi-loader.h +++ b/src/shared/efi-loader.h @@ -5,6 +5,7 @@ #include "efivars-fundamental.h" #include "efivars.h" +#include "log.h" /* Various calls that interface with EFI variables implementing https://systemd.io/BOOT_LOADER_INTERFACE */ diff --git a/src/shared/elf-util.c b/src/shared/elf-util.c index a3ff1fd3fb..f900b082ca 100644 --- a/src/shared/elf-util.c +++ b/src/shared/elf-util.c @@ -21,6 +21,7 @@ #include "format-util.h" #include "hexdecoct.h" #include "io-util.h" +#include "log.h" #include "macro.h" #include "memstream-util.h" #include "path-util.h" diff --git a/src/shared/elf-util.h b/src/shared/elf-util.h index 1d6af58151..8f97f85295 100644 --- a/src/shared/elf-util.h +++ b/src/shared/elf-util.h @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once +#include "log.h" #include "sd-json.h" #if HAVE_ELFUTILS diff --git a/src/shared/fido2-util.c b/src/shared/fido2-util.c index 1dc57cbd42..8c893d6b23 100644 --- a/src/shared/fido2-util.c +++ b/src/shared/fido2-util.c @@ -3,6 +3,7 @@ #include "fido2-util.h" #include "fileio.h" #include "libfido2-util.h" +#include "log.h" #include "random-util.h" int fido2_generate_salt(struct iovec *ret_salt) { diff --git a/src/shared/format-table.c b/src/shared/format-table.c index a6d0713981..42dd583fcd 100644 --- a/src/shared/format-table.c +++ b/src/shared/format-table.c @@ -18,6 +18,7 @@ #include "gunicode.h" #include "id128-util.h" #include "in-addr-util.h" +#include "log.h" #include "memory-util.h" #include "memstream-util.h" #include "pager.h" diff --git a/src/shared/fstab-util.h b/src/shared/fstab-util.h index 8dd4270025..cf909c60f8 100644 --- a/src/shared/fstab-util.h +++ b/src/shared/fstab-util.h @@ -3,6 +3,7 @@ #include #include +#include #include "assert-util.h" #include "macro.h" diff --git a/src/shared/group-record.c b/src/shared/group-record.c index db3b96d3ec..36dc1397df 100644 --- a/src/shared/group-record.c +++ b/src/shared/group-record.c @@ -3,6 +3,7 @@ #include "bitfield.h" #include "group-record.h" #include "json-util.h" +#include "log.h" #include "strv.h" #include "uid-classification.h" #include "user-util.h" diff --git a/src/shared/hwdb-util.c b/src/shared/hwdb-util.c index 3c5bccda9e..82c9f02f73 100644 --- a/src/shared/hwdb-util.c +++ b/src/shared/hwdb-util.c @@ -13,6 +13,7 @@ #include "hwdb-internal.h" #include "hwdb-util.h" #include "label-util.h" +#include "log.h" #include "mkdir-label.h" #include "nulstr-util.h" #include "path-util.h" diff --git a/src/shared/idn-util.c b/src/shared/idn-util.c index c62f657491..ccb2db411f 100644 --- a/src/shared/idn-util.c +++ b/src/shared/idn-util.c @@ -10,6 +10,7 @@ #include "alloc-util.h" #include "dlfcn-util.h" #include "idn-util.h" +#include "log.h" #if HAVE_LIBIDN || HAVE_LIBIDN2 static void* idn_dl = NULL; diff --git a/src/shared/install-file.c b/src/shared/install-file.c index adccf47c9d..ea8cbbf928 100644 --- a/src/shared/install-file.c +++ b/src/shared/install-file.c @@ -8,6 +8,7 @@ #include "fd-util.h" #include "fs-util.h" #include "install-file.h" +#include "log.h" #include "missing_syscall.h" #include "rm-rf.h" #include "sync-util.h" diff --git a/src/shared/journal-file-util.c b/src/shared/journal-file-util.c index edd5056ad9..43ebe0a12f 100644 --- a/src/shared/journal-file-util.c +++ b/src/shared/journal-file-util.c @@ -10,6 +10,7 @@ #include "format-util.h" #include "journal-authenticate.h" #include "journal-file-util.h" +#include "log.h" #include "path-util.h" #include "random-util.h" #include "set.h" diff --git a/src/shared/journal-importer.c b/src/shared/journal-importer.c index 9264638303..a7b491f024 100644 --- a/src/shared/journal-importer.c +++ b/src/shared/journal-importer.c @@ -12,6 +12,7 @@ #include "journal-file.h" #include "journal-importer.h" #include "journal-util.h" +#include "log.h" #include "parse-util.h" #include "string-util.h" #include "strv.h" diff --git a/src/shared/kernel-image.c b/src/shared/kernel-image.c index 57e851fa54..273120021a 100644 --- a/src/shared/kernel-image.c +++ b/src/shared/kernel-image.c @@ -4,6 +4,7 @@ #include "fileio.h" #include "env-file.h" #include "kernel-image.h" +#include "log.h" #include "os-util.h" #include "parse-util.h" #include "pe-binary.h" diff --git a/src/shared/killall.c b/src/shared/killall.c index b3a9c7e16f..9d853fd566 100644 --- a/src/shared/killall.c +++ b/src/shared/killall.c @@ -16,6 +16,7 @@ #include "format-util.h" #include "initrd-util.h" #include "killall.h" +#include "log.h" #include "parse-util.h" #include "process-util.h" #include "set.h" diff --git a/src/shared/libarchive-util.c b/src/shared/libarchive-util.c index 3d82bb1acf..9c34150477 100644 --- a/src/shared/libarchive-util.c +++ b/src/shared/libarchive-util.c @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #include "libarchive-util.h" +#include "log.h" #if HAVE_LIBARCHIVE static void *libarchive_dl = NULL; diff --git a/src/shared/libfido2-util.c b/src/shared/libfido2-util.c index 4a44fe5ff5..4e65b13548 100644 --- a/src/shared/libfido2-util.c +++ b/src/shared/libfido2-util.c @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #include "libfido2-util.h" +#include "log.h" #if HAVE_LIBFIDO2 #include "alloc-util.h" @@ -9,7 +10,6 @@ #include "dlfcn-util.h" #include "format-table.h" #include "glyph-util.h" -#include "log.h" #include "memory-util.h" #include "plymouth-util.h" #include "strv.h" diff --git a/src/shared/libmount-util.c b/src/shared/libmount-util.c index 1a6b68f920..2e7b28caa5 100644 --- a/src/shared/libmount-util.c +++ b/src/shared/libmount-util.c @@ -3,6 +3,7 @@ #include #include "libmount-util.h" +#include "log.h" int libmount_parse_full( const char *path, diff --git a/src/shared/local-addresses.c b/src/shared/local-addresses.c index 372f35f477..1874bcbcee 100644 --- a/src/shared/local-addresses.c +++ b/src/shared/local-addresses.c @@ -7,6 +7,7 @@ #include "alloc-util.h" #include "fd-util.h" #include "local-addresses.h" +#include "log.h" #include "macro.h" #include "netlink-util.h" #include "sort-util.h" diff --git a/src/shared/loopback-setup.c b/src/shared/loopback-setup.c index 4039c2629a..f1eb0fb113 100644 --- a/src/shared/loopback-setup.c +++ b/src/shared/loopback-setup.c @@ -5,6 +5,7 @@ #include "sd-netlink.h" +#include "log.h" #include "loopback-setup.h" #include "missing_network.h" #include "netlink-util.h" diff --git a/src/shared/lsm-util.c b/src/shared/lsm-util.c index 0a50acf59b..bd1eb4a3cd 100644 --- a/src/shared/lsm-util.c +++ b/src/shared/lsm-util.c @@ -3,6 +3,7 @@ #include "alloc-util.h" #include "extract-word.h" #include "fileio.h" +#include "log.h" #include "lsm-util.h" #include "mountpoint-util.h" #include "string-util.h" diff --git a/src/shared/machine-credential.c b/src/shared/machine-credential.c index c1e76e468e..149cbfa777 100644 --- a/src/shared/machine-credential.c +++ b/src/shared/machine-credential.c @@ -5,6 +5,7 @@ #include "escape.h" #include "extract-word.h" #include "fileio.h" +#include "log.h" #include "macro.h" #include "memory-util.h" #include "machine-credential.h" diff --git a/src/shared/machine-pool.c b/src/shared/machine-pool.c index b372de40a3..8fa17540eb 100644 --- a/src/shared/machine-pool.c +++ b/src/shared/machine-pool.c @@ -4,6 +4,7 @@ #include "btrfs-util.h" #include "label-util.h" +#include "log.h" #include "machine-pool.h" #include "missing_magic.h" #include "stat-util.h" diff --git a/src/shared/notify-recv.c b/src/shared/notify-recv.c index 8c5e711495..ac790da2a8 100644 --- a/src/shared/notify-recv.c +++ b/src/shared/notify-recv.c @@ -2,6 +2,7 @@ #include "async.h" #include "fd-util.h" +#include "log.h" #include "notify-recv.h" #include "socket-util.h" #include "strv.h" diff --git a/src/shared/nsflags.c b/src/shared/nsflags.c index f7f1995a87..17ffb979fe 100644 --- a/src/shared/nsflags.c +++ b/src/shared/nsflags.c @@ -4,6 +4,7 @@ #include "alloc-util.h" #include "extract-word.h" +#include "log.h" #include "namespace-util.h" #include "nsflags.h" #include "string-util.h" diff --git a/src/shared/nsresource.c b/src/shared/nsresource.c index 0255a6860c..e76f5ab47e 100644 --- a/src/shared/nsresource.c +++ b/src/shared/nsresource.c @@ -7,6 +7,7 @@ #include "fd-util.h" #include "format-util.h" #include "json-util.h" +#include "log.h" #include "missing_sched.h" #include "namespace-util.h" #include "nsresource.h" diff --git a/src/shared/numa-util.c b/src/shared/numa-util.c index b4f815277a..7e42f9ae5a 100644 --- a/src/shared/numa-util.c +++ b/src/shared/numa-util.c @@ -8,6 +8,7 @@ #include "dirent-util.h" #include "fd-util.h" #include "fileio.h" +#include "log.h" #include "macro.h" #include "missing_syscall.h" #include "numa-util.h" diff --git a/src/shared/openssl-util.c b/src/shared/openssl-util.c index 96de070876..b7d6dfc6a6 100644 --- a/src/shared/openssl-util.c +++ b/src/shared/openssl-util.c @@ -7,6 +7,7 @@ #include "fd-util.h" #include "fileio.h" #include "hexdecoct.h" +#include "log.h" #include "memory-util.h" #include "memstream-util.h" #include "openssl-util.h" diff --git a/src/shared/pam-util.c b/src/shared/pam-util.c index 95e646b460..96afbfa61c 100644 --- a/src/shared/pam-util.c +++ b/src/shared/pam-util.c @@ -9,6 +9,7 @@ #include "errno-util.h" #include "fd-util.h" #include "format-util.h" +#include "log.h" #include "macro.h" #include "pam-util.h" #include "process-util.h" diff --git a/src/shared/parse-argument.c b/src/shared/parse-argument.c index 177028e424..ced3665725 100644 --- a/src/shared/parse-argument.c +++ b/src/shared/parse-argument.c @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #include "format-table.h" +#include "log.h" #include "parse-argument.h" #include "path-util.h" #include "signal-util.h" diff --git a/src/shared/pcrextend-util.c b/src/shared/pcrextend-util.c index 96c1c07bc8..6e1f0f04f2 100644 --- a/src/shared/pcrextend-util.c +++ b/src/shared/pcrextend-util.c @@ -8,6 +8,7 @@ #include "errno-util.h" #include "escape.h" #include "fd-util.h" +#include "log.h" #include "mountpoint-util.h" #include "pcrextend-util.h" #include "strv.h" diff --git a/src/shared/pkcs11-util.c b/src/shared/pkcs11-util.c index a38a91279d..289b610f7a 100644 --- a/src/shared/pkcs11-util.c +++ b/src/shared/pkcs11-util.c @@ -9,6 +9,7 @@ #include "fd-util.h" #include "format-table.h" #include "io-util.h" +#include "log.h" #include "memory-util.h" #if HAVE_OPENSSL #include "openssl-util.h" diff --git a/src/shared/pkcs11-util.h b/src/shared/pkcs11-util.h index 000a127c97..8e54756675 100644 --- a/src/shared/pkcs11-util.h +++ b/src/shared/pkcs11-util.h @@ -14,6 +14,7 @@ #include "ask-password-api.h" #include "dlfcn-util.h" +#include "log.h" #include "macro.h" #include "time-util.h" diff --git a/src/shared/plymouth-util.c b/src/shared/plymouth-util.c index 46de29b267..8ef52d90c8 100644 --- a/src/shared/plymouth-util.c +++ b/src/shared/plymouth-util.c @@ -2,6 +2,7 @@ #include "fd-util.h" #include "io-util.h" +#include "log.h" #include "plymouth-util.h" #include "socket-util.h" diff --git a/src/shared/portable-util.c b/src/shared/portable-util.c index 85c128a1b4..1766171164 100644 --- a/src/shared/portable-util.c +++ b/src/shared/portable-util.c @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #include "fs-util.h" +#include "log.h" #include "nulstr-util.h" #include "portable-util.h" #include "string-util.h" diff --git a/src/shared/pretty-print.c b/src/shared/pretty-print.c index 5457a80701..0f5ccde54f 100644 --- a/src/shared/pretty-print.c +++ b/src/shared/pretty-print.c @@ -12,6 +12,7 @@ #include "env-util.h" #include "fd-util.h" #include "fileio.h" +#include "log.h" #include "pager.h" #include "path-util.h" #include "pretty-print.h" diff --git a/src/shared/resize-fs.c b/src/shared/resize-fs.c index 47759a19c2..b913aedef3 100644 --- a/src/shared/resize-fs.c +++ b/src/shared/resize-fs.c @@ -6,6 +6,7 @@ #include "blockdev-util.h" #include "fs-util.h" +#include "log.h" #include "missing_fs.h" #include "missing_magic.h" #include "missing_xfs.h" diff --git a/src/shared/seccomp-util.c b/src/shared/seccomp-util.c index 562defb4b1..5234f11ea0 100644 --- a/src/shared/seccomp-util.c +++ b/src/shared/seccomp-util.c @@ -17,6 +17,7 @@ #include "alloc-util.h" #include "env-util.h" #include "errno-list.h" +#include "log.h" #include "macro.h" #include "namespace-util.h" #include "nsflags.h" diff --git a/src/shared/service-util.c b/src/shared/service-util.c index 7d46ee7a66..81d004d003 100644 --- a/src/shared/service-util.c +++ b/src/shared/service-util.c @@ -5,6 +5,7 @@ #include "alloc-util.h" #include "build.h" +#include "log.h" #include "pretty-print.h" #include "service-util.h" #include "terminal-util.h" diff --git a/src/shared/shift-uid.c b/src/shared/shift-uid.c index d8e7b493c5..d723fa911b 100644 --- a/src/shared/shift-uid.c +++ b/src/shared/shift-uid.c @@ -6,6 +6,7 @@ #include "dirent-util.h" #include "fd-util.h" #include "fileio.h" +#include "log.h" #include "missing_magic.h" #include "shift-uid.h" #include "stat-util.h" diff --git a/src/shared/tests.h b/src/shared/tests.h index 42cdac9415..5a37c56324 100644 --- a/src/shared/tests.h +++ b/src/shared/tests.h @@ -9,6 +9,7 @@ #include "argv-util.h" #include "errno-util.h" +#include "log.h" #include "macro.h" #include "process-util.h" #include "rlimit-util.h" diff --git a/src/shared/unit-file.c b/src/shared/unit-file.c index 95ba31e3c6..e20894216b 100644 --- a/src/shared/unit-file.c +++ b/src/shared/unit-file.c @@ -7,6 +7,7 @@ #include "fd-util.h" #include "fs-util.h" #include "initrd-util.h" +#include "log.h" #include "macro.h" #include "path-lookup.h" #include "set.h" diff --git a/src/shared/user-record-nss.c b/src/shared/user-record-nss.c index 9797c25fa4..5d8ce765e8 100644 --- a/src/shared/user-record-nss.c +++ b/src/shared/user-record-nss.c @@ -3,6 +3,7 @@ #include "errno-util.h" #include "format-util.h" #include "libcrypt-util.h" +#include "log.h" #include "strv.h" #include "user-record-nss.h" #include "user-util.h" diff --git a/src/shared/user-record-show.c b/src/shared/user-record-show.c index 4f0678bed4..11af68a72e 100644 --- a/src/shared/user-record-show.c +++ b/src/shared/user-record-show.c @@ -6,6 +6,7 @@ #include "glyph-util.h" #include "hashmap.h" #include "hexdecoct.h" +#include "log.h" #include "path-util.h" #include "percent-util.h" #include "pretty-print.h" diff --git a/src/shared/user-record.c b/src/shared/user-record.c index d99da34654..10b0504898 100644 --- a/src/shared/user-record.c +++ b/src/shared/user-record.c @@ -14,6 +14,7 @@ #include "hostname-util.h" #include "json-util.h" #include "locale-util.h" +#include "log.h" #include "memory-util.h" #include "path-util.h" #include "percent-util.h" diff --git a/src/shared/userdb-dropin.c b/src/shared/userdb-dropin.c index 81fd5f3ebc..20c89bb573 100644 --- a/src/shared/userdb-dropin.c +++ b/src/shared/userdb-dropin.c @@ -5,6 +5,7 @@ #include "fileio.h" #include "format-util.h" #include "group-record.h" +#include "log.h" #include "path-util.h" #include "stdio-util.h" #include "user-util.h" diff --git a/src/shared/userdb.c b/src/shared/userdb.c index a420504b0c..69d4ddf485 100644 --- a/src/shared/userdb.c +++ b/src/shared/userdb.c @@ -12,6 +12,7 @@ #include "fd-util.h" #include "format-util.h" #include "json-util.h" +#include "log.h" #include "missing_syscall.h" #include "parse-util.h" #include "set.h" diff --git a/src/shared/utmp-wtmp.c b/src/shared/utmp-wtmp.c index e399b1d5d7..853ef29a7c 100644 --- a/src/shared/utmp-wtmp.c +++ b/src/shared/utmp-wtmp.c @@ -12,6 +12,7 @@ #include "alloc-util.h" #include "errno-util.h" #include "hostname-util.h" +#include "log.h" #include "macro.h" #include "memory-util.h" #include "path-util.h" diff --git a/src/shared/varlink-io.systemd.service.c b/src/shared/varlink-io.systemd.service.c index dd1329f878..7dd15c6e40 100644 --- a/src/shared/varlink-io.systemd.service.c +++ b/src/shared/varlink-io.systemd.service.c @@ -4,6 +4,7 @@ #include "env-util.h" #include "json-util.h" +#include "log.h" #include "strv.h" #include "varlink-io.systemd.service.h" diff --git a/src/shared/varlink-serialize.c b/src/shared/varlink-serialize.c index 422808df39..57a8d7908e 100644 --- a/src/shared/varlink-serialize.c +++ b/src/shared/varlink-serialize.c @@ -1,5 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ +#include "log.h" #include "parse-util.h" #include "varlink-internal.h" #include "varlink-serialize.h" diff --git a/src/shared/vconsole-util.c b/src/shared/vconsole-util.c index ce7d54d7e8..9451db8404 100644 --- a/src/shared/vconsole-util.c +++ b/src/shared/vconsole-util.c @@ -4,6 +4,7 @@ #include "fd-util.h" #include "fileio.h" #include "kbd-util.h" +#include "log.h" #include "string-util.h" #include "strv.h" #include "vconsole-util.h" diff --git a/src/shared/vpick.c b/src/shared/vpick.c index 08f6dd72d9..0319a6f5f8 100644 --- a/src/shared/vpick.c +++ b/src/shared/vpick.c @@ -7,6 +7,7 @@ #include "chase.h" #include "fd-util.h" #include "fs-util.h" +#include "log.h" #include "parse-util.h" #include "path-util.h" #include "recurse-dir.h" diff --git a/src/shared/xml.c b/src/shared/xml.c index 3b1fb41fef..d5ec3b25fe 100644 --- a/src/shared/xml.c +++ b/src/shared/xml.c @@ -3,6 +3,7 @@ #include #include +#include "log.h" #include "macro.h" #include "string-util.h" #include "xml.h" diff --git a/src/shutdown/detach-swap.c b/src/shutdown/detach-swap.c index 4c47636fc6..208134cb15 100644 --- a/src/shutdown/detach-swap.c +++ b/src/shutdown/detach-swap.c @@ -10,6 +10,7 @@ #include "errno-util.h" #include "libmount-util.h" #include "list.h" +#include "log.h" static void swap_device_free(SwapDevice **head, SwapDevice *m) { assert(head); diff --git a/src/sysupdate/sysupdate-instance.c b/src/sysupdate/sysupdate-instance.c index 16bfab912f..aef16c35dc 100644 --- a/src/sysupdate/sysupdate-instance.c +++ b/src/sysupdate/sysupdate-instance.c @@ -3,6 +3,7 @@ #include #include +#include "log.h" #include "sysupdate-instance.h" void instance_metadata_destroy(InstanceMetadata *m) { diff --git a/src/sysupdate/sysupdate-partition.c b/src/sysupdate/sysupdate-partition.c index f7fc17fcbd..f22d9eae23 100644 --- a/src/sysupdate/sysupdate-partition.c +++ b/src/sysupdate/sysupdate-partition.c @@ -6,6 +6,7 @@ #include "extract-word.h" #include "gpt.h" #include "id128-util.h" +#include "log.h" #include "parse-util.h" #include "stdio-util.h" #include "string-util.h" diff --git a/src/sysupdate/sysupdate-pattern.c b/src/sysupdate/sysupdate-pattern.c index f5dc7cd1ad..ff099c8edd 100644 --- a/src/sysupdate/sysupdate-pattern.c +++ b/src/sysupdate/sysupdate-pattern.c @@ -3,6 +3,7 @@ #include "alloc-util.h" #include "hexdecoct.h" #include "list.h" +#include "log.h" #include "parse-util.h" #include "path-util.h" #include "stdio-util.h" diff --git a/src/sysupdate/sysupdate-util.c b/src/sysupdate/sysupdate-util.c index 2b3acd0fd9..d66e6fa86f 100644 --- a/src/sysupdate/sysupdate-util.c +++ b/src/sysupdate/sysupdate-util.c @@ -4,6 +4,7 @@ #include "bus-error.h" #include "bus-locator.h" +#include "log.h" #include "login-util.h" #include "sysupdate-util.h" diff --git a/src/test/nss-test-util.c b/src/test/nss-test-util.c index 20643f8aa5..7b17c21367 100644 --- a/src/test/nss-test-util.c +++ b/src/test/nss-test-util.c @@ -4,6 +4,7 @@ #include #include +#include "log.h" #include "nss-test-util.h" #include "string-util.h" diff --git a/src/test/test-sizeof.c b/src/test/test-sizeof.c index 4e87f4ab74..c3f1bdee89 100644 --- a/src/test/test-sizeof.c +++ b/src/test/test-sizeof.c @@ -2,6 +2,7 @@ #include #include +#include #include #include #include diff --git a/src/timedate/timedatectl.c b/src/timedate/timedatectl.c index f88a8ceba4..1691c5aa1b 100644 --- a/src/timedate/timedatectl.c +++ b/src/timedate/timedatectl.c @@ -16,6 +16,7 @@ #include "env-util.h" #include "format-table.h" #include "in-addr-util.h" +#include "log.h" #include "main-func.h" #include "pager.h" #include "parse-util.h" diff --git a/src/timedate/timedated.c b/src/timedate/timedated.c index 6c5133e3a1..303e2fed3b 100644 --- a/src/timedate/timedated.c +++ b/src/timedate/timedated.c @@ -30,6 +30,7 @@ #include "hashmap.h" #include "hwclock-util.h" #include "list.h" +#include "log.h" #include "main-func.h" #include "memory-util.h" #include "path-util.h" diff --git a/src/timesync/timesyncd-server.c b/src/timesync/timesyncd-server.c index 0f68203e03..ccaac3d32d 100644 --- a/src/timesync/timesyncd-server.c +++ b/src/timesync/timesyncd-server.c @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #include "alloc-util.h" +#include "log.h" #include "string-table.h" #include "timesyncd-server.h" diff --git a/src/tmpfiles/offline-passwd.c b/src/tmpfiles/offline-passwd.c index 7b5592b9c2..b4b16fcd52 100644 --- a/src/tmpfiles/offline-passwd.c +++ b/src/tmpfiles/offline-passwd.c @@ -2,6 +2,7 @@ #include "chase.h" #include "fd-util.h" +#include "log.h" #include "offline-passwd.h" #include "path-util.h" #include "user-util.h" diff --git a/src/tpm2-setup/tpm2-setup.c b/src/tpm2-setup/tpm2-setup.c index 1906b5b7c8..0a928e1cb9 100644 --- a/src/tpm2-setup/tpm2-setup.c +++ b/src/tpm2-setup/tpm2-setup.c @@ -10,6 +10,7 @@ #include "fileio.h" #include "fs-util.h" #include "hexdecoct.h" +#include "log.h" #include "main-func.h" #include "mkdir.h" #include "parse-util.h" diff --git a/src/udev/fido_id/test-fido-id-desc.c b/src/udev/fido_id/test-fido-id-desc.c index 36c777a09e..0564e64ab9 100644 --- a/src/udev/fido_id/test-fido-id-desc.c +++ b/src/udev/fido_id/test-fido-id-desc.c @@ -4,6 +4,7 @@ #include #include "fido_id_desc.h" +#include "log.h" #include "macro.h" #include "tests.h" diff --git a/src/udev/mtd_probe/mtd_probe.c b/src/udev/mtd_probe/mtd_probe.c index 1035320490..69dd50a24a 100644 --- a/src/udev/mtd_probe/mtd_probe.c +++ b/src/udev/mtd_probe/mtd_probe.c @@ -32,6 +32,7 @@ #include "alloc-util.h" #include "build.h" #include "fd-util.h" +#include "log.h" #include "main-func.h" #include "mtd_probe.h" diff --git a/src/udev/mtd_probe/probe_smartmedia.c b/src/udev/mtd_probe/probe_smartmedia.c index 68fe8c36b5..67f7009c63 100644 --- a/src/udev/mtd_probe/probe_smartmedia.c +++ b/src/udev/mtd_probe/probe_smartmedia.c @@ -30,6 +30,7 @@ #include #include "alloc-util.h" +#include "log.h" #include "mtd_probe.h" static const uint8_t cis_signature[] = { diff --git a/src/udev/scsi_id/scsi_serial.c b/src/udev/scsi_id/scsi_serial.c index e83523fe25..2d8792df24 100644 --- a/src/udev/scsi_id/scsi_serial.c +++ b/src/udev/scsi_id/scsi_serial.c @@ -21,6 +21,7 @@ #include #include "devnum-util.h" +#include "log.h" #include "memory-util.h" #include "random-util.h" #include "scsi.h" diff --git a/src/udev/test-udev-builtin.c b/src/udev/test-udev-builtin.c index 2ce7f196fd..265776d997 100644 --- a/src/udev/test-udev-builtin.c +++ b/src/udev/test-udev-builtin.c @@ -1,5 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ +#include "log.h" #include "tests.h" #include "udev-builtin.h" diff --git a/src/udev/test-udev-format.c b/src/udev/test-udev-format.c index 7eacb6b81a..1acd8db72b 100644 --- a/src/udev/test-udev-format.c +++ b/src/udev/test-udev-format.c @@ -1,5 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ +#include "log.h" #include "mountpoint-util.h" #include "string-util.h" #include "tests.h" diff --git a/src/udev/test-udev-node.c b/src/udev/test-udev-node.c index b5eaa0de58..ae48e0b2cd 100644 --- a/src/udev/test-udev-node.c +++ b/src/udev/test-udev-node.c @@ -1,5 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ +#include "log.h" #include "tests.h" #include "udev-node.h" diff --git a/src/udev/udev-ctrl.c b/src/udev/udev-ctrl.c index 56da1fb353..42e42ee336 100644 --- a/src/udev/udev-ctrl.c +++ b/src/udev/udev-ctrl.c @@ -15,6 +15,7 @@ #include "fd-util.h" #include "format-util.h" #include "iovec-util.h" +#include "log.h" #include "socket-util.h" #include "strxcpyx.h" #include "udev-ctrl.h" diff --git a/src/udev/udev-manager-ctrl.c b/src/udev/udev-manager-ctrl.c index b39af06927..d568549cf0 100644 --- a/src/udev/udev-manager-ctrl.c +++ b/src/udev/udev-manager-ctrl.c @@ -3,6 +3,7 @@ #include "sd-daemon.h" #include "sd-event.h" +#include "log.h" #include "syslog-util.h" #include "udev-ctrl.h" #include "udev-manager.h" diff --git a/src/udev/udev-varlink.c b/src/udev/udev-varlink.c index d0e85c2633..1e95a6a970 100644 --- a/src/udev/udev-varlink.c +++ b/src/udev/udev-varlink.c @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #include "json-util.h" +#include "log.h" #include "strv.h" #include "udev-manager.h" #include "udev-varlink.h" diff --git a/src/udev/udevadm-control.c b/src/udev/udevadm-control.c index f9cc4c34cf..64eef31a81 100644 --- a/src/udev/udevadm-control.c +++ b/src/udev/udevadm-control.c @@ -10,6 +10,7 @@ #include "creds-util.h" #include "errno-util.h" +#include "log.h" #include "parse-argument.h" #include "parse-util.h" #include "process-util.h" diff --git a/src/udev/udevadm-hwdb.c b/src/udev/udevadm-hwdb.c index f4c3072b2e..d5a4b39cc8 100644 --- a/src/udev/udevadm-hwdb.c +++ b/src/udev/udevadm-hwdb.c @@ -4,6 +4,7 @@ #include "assert-util.h" #include "hwdb-util.h" +#include "log.h" #include "udevadm.h" static const char *arg_test = NULL; diff --git a/src/udev/udevadm-test.c b/src/udev/udevadm-test.c index 40031e2119..51a63b2174 100644 --- a/src/udev/udevadm-test.c +++ b/src/udev/udevadm-test.c @@ -10,6 +10,7 @@ #include "sd-device.h" #include "device-private.h" +#include "log.h" #include "parse-argument.h" #include "static-destruct.h" #include "strv.h" diff --git a/src/udev/udevadm-util.c b/src/udev/udevadm-util.c index bc7b277d91..ed69dd1795 100644 --- a/src/udev/udevadm-util.c +++ b/src/udev/udevadm-util.c @@ -9,6 +9,7 @@ #include "conf-files.h" #include "constants.h" #include "device-private.h" +#include "log.h" #include "path-util.h" #include "string-table.h" #include "udev-ctrl.h" diff --git a/src/udev/udevd.c b/src/udev/udevd.c index 499fb04903..cf3e663277 100644 --- a/src/udev/udevd.c +++ b/src/udev/udevd.c @@ -9,6 +9,7 @@ #include "errno-util.h" #include "fd-util.h" +#include "log.h" #include "mkdir.h" #include "process-util.h" #include "rlimit-util.h" diff --git a/src/udev/v4l_id/v4l_id.c b/src/udev/v4l_id/v4l_id.c index 5c540659f3..6bc04e67e8 100644 --- a/src/udev/v4l_id/v4l_id.c +++ b/src/udev/v4l_id/v4l_id.c @@ -18,6 +18,7 @@ #include "build.h" #include "fd-util.h" +#include "log.h" #include "main-func.h" static const char *arg_device = NULL; diff --git a/src/update-done/update-done.c b/src/update-done/update-done.c index 62c12c5d21..cb6822bddd 100644 --- a/src/update-done/update-done.c +++ b/src/update-done/update-done.c @@ -9,6 +9,7 @@ #include "chase.h" #include "fd-util.h" #include "fileio.h" +#include "log.h" #include "main-func.h" #include "parse-argument.h" #include "path-util.h" diff --git a/src/userdb/userdbctl.c b/src/userdb/userdbctl.c index 2bc2604318..aba39d251a 100644 --- a/src/userdb/userdbctl.c +++ b/src/userdb/userdbctl.c @@ -13,6 +13,7 @@ #include "fileio.h" #include "format-table.h" #include "format-util.h" +#include "log.h" #include "main-func.h" #include "mkdir-label.h" #include "pager.h" diff --git a/src/userdb/userdbd-manager.c b/src/userdb/userdbd-manager.c index 3d3ac8fdc6..63a53f0e00 100644 --- a/src/userdb/userdbd-manager.c +++ b/src/userdb/userdbd-manager.c @@ -10,6 +10,7 @@ #include "event-util.h" #include "fd-util.h" #include "fs-util.h" +#include "log.h" #include "mkdir.h" #include "process-util.h" #include "set.h" diff --git a/src/varlinkctl/varlinkctl.c b/src/varlinkctl/varlinkctl.c index 978bed5b7f..3bcb34b642 100644 --- a/src/varlinkctl/varlinkctl.c +++ b/src/varlinkctl/varlinkctl.c @@ -10,6 +10,7 @@ #include "fileio.h" #include "format-table.h" #include "io-util.h" +#include "log.h" #include "main-func.h" #include "memfd-util.h" #include "pager.h" diff --git a/src/vmspawn/vmspawn-register.c b/src/vmspawn/vmspawn-register.c index e60467496a..c9b0d9779b 100644 --- a/src/vmspawn/vmspawn-register.c +++ b/src/vmspawn/vmspawn-register.c @@ -10,6 +10,7 @@ #include "bus-error.h" #include "bus-locator.h" #include "json-util.h" +#include "log.h" #include "macro.h" #include "process-util.h" #include "socket-util.h" diff --git a/src/vmspawn/vmspawn-scope.c b/src/vmspawn/vmspawn-scope.c index c8c2b8f296..024efb53e1 100644 --- a/src/vmspawn/vmspawn-scope.c +++ b/src/vmspawn/vmspawn-scope.c @@ -10,6 +10,7 @@ #include "bus-util.h" #include "bus-wait-for-jobs.h" #include "escape.h" +#include "log.h" #include "macro.h" #include "process-util.h" #include "random-util.h" diff --git a/src/vpick/vpick-tool.c b/src/vpick/vpick-tool.c index c5ae8c510a..64ece30510 100644 --- a/src/vpick/vpick-tool.c +++ b/src/vpick/vpick-tool.c @@ -6,6 +6,7 @@ #include "build.h" #include "format-table.h" #include "fs-util.h" +#include "log.h" #include "main-func.h" #include "parse-util.h" #include "path-util.h" diff --git a/src/xdg-autostart-generator/xdg-autostart-condition.c b/src/xdg-autostart-generator/xdg-autostart-condition.c index 9ceea61547..2f0710060a 100644 --- a/src/xdg-autostart-generator/xdg-autostart-condition.c +++ b/src/xdg-autostart-generator/xdg-autostart-condition.c @@ -1,5 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ +#include "log.h" #include "main-func.h" #include "strv.h" From 5d226b2f9a2d85f51c5e49b26a5379142139f7bc Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Sat, 12 Apr 2025 16:50:36 +0200 Subject: [PATCH 11/15] basic: Move macro.h include in list.h to the top of the file Now that the circular dependency between log.h, macro.h and list.h is gone, we can move the include to the top. --- src/basic/list.h | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/basic/list.h b/src/basic/list.h index 10e69541d4..090bdc7b60 100644 --- a/src/basic/list.h +++ b/src/basic/list.h @@ -1,6 +1,8 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once +#include "macro.h" + /* The head of the linked list. Use this in the structure that shall * contain the head of the linked list */ #define LIST_HEAD(t,name) \ @@ -203,7 +205,3 @@ free_func(elem); \ head; \ }) - -/* Now include "macro.h", because we want our definition of assert() which the macros above use. We include - * it down here instead of up top, since macro.h pulls in log.h which in turn needs our own definitions. */ -#include "macro.h" From 95609f3dff364c2b0aea6d6c1918defccab9e197 Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Sat, 12 Apr 2025 16:59:43 +0200 Subject: [PATCH 12/15] basic: Remove circular dep between alloc-util.h and memory-util.h --- src/basic/alloc-util.c | 1 - src/basic/alloc-util.h | 3 +-- src/basic/keyring-util.c | 1 + src/basic/memory-util.c | 12 ++++++++++++ src/basic/memory-util.h | 12 +----------- .../cryptsetup-token-systemd-pkcs11.c | 1 + src/shared/recovery-key.c | 1 + 7 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/basic/alloc-util.c b/src/basic/alloc-util.c index 96cf27dc37..1a6b178eb7 100644 --- a/src/basic/alloc-util.c +++ b/src/basic/alloc-util.c @@ -6,7 +6,6 @@ #include "alloc-util.h" #include "macro.h" -#include "memory-util.h" void* memdup(const void *p, size_t l) { void *ret; diff --git a/src/basic/alloc-util.h b/src/basic/alloc-util.h index 8bb3c42113..764a364a71 100644 --- a/src/basic/alloc-util.h +++ b/src/basic/alloc-util.h @@ -9,6 +9,7 @@ #include "assert-util.h" #include "macro.h" +#include "memory-util.h" #if HAS_FEATURE_MEMORY_SANITIZER # include @@ -267,5 +268,3 @@ _alloc_(2) static inline void *realloc0(void *p, size_t new_size) { return q; } - -#include "memory-util.h" diff --git a/src/basic/keyring-util.c b/src/basic/keyring-util.c index 9f39161c14..4d7431cdf2 100644 --- a/src/basic/keyring-util.c +++ b/src/basic/keyring-util.c @@ -2,6 +2,7 @@ #include "keyring-util.h" #include "log.h" +#include "alloc-util.h" #include "memory-util.h" #include "missing_syscall.h" diff --git a/src/basic/memory-util.c b/src/basic/memory-util.c index 1596727e58..b39ec725a9 100644 --- a/src/basic/memory-util.c +++ b/src/basic/memory-util.c @@ -3,6 +3,7 @@ #include #include +#include "alloc-util.h" #include "memory-util.h" size_t page_size(void) { @@ -55,3 +56,14 @@ void* memdup_reverse(const void *mem, size_t size) { return p; } + +void* erase_and_free(void *p) { + size_t l; + + if (!p) + return NULL; + + l = MALLOC_SIZEOF_SAFE(p); + explicit_bzero_safe(p, l); + return mfree(p); +} diff --git a/src/basic/memory-util.h b/src/basic/memory-util.h index 524e827a6c..443fc3a8ab 100644 --- a/src/basic/memory-util.h +++ b/src/basic/memory-util.h @@ -7,7 +7,6 @@ #include #include -#include "alloc-util.h" #include "macro.h" #include "memory-util-fundamental.h" @@ -98,16 +97,7 @@ static inline void* mempmem_safe(const void *haystack, size_t haystacklen, const return (uint8_t*) p + needlelen; } -static inline void* erase_and_free(void *p) { - size_t l; - - if (!p) - return NULL; - - l = MALLOC_SIZEOF_SAFE(p); - explicit_bzero_safe(p, l); - return mfree(p); -} +void* erase_and_free(void *p); static inline void erase_and_freep(void *p) { erase_and_free(*(void**) p); diff --git a/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-pkcs11.c b/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-pkcs11.c index 07c95fece2..dc8f92f2e1 100644 --- a/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-pkcs11.c +++ b/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-pkcs11.c @@ -5,6 +5,7 @@ #include "sd-json.h" +#include "alloc-util.h" #include "cryptsetup-token.h" #include "cryptsetup-token-util.h" #include "hexdecoct.h" diff --git a/src/shared/recovery-key.c b/src/shared/recovery-key.c index 6a2f4d0f98..3233f05dfc 100644 --- a/src/shared/recovery-key.c +++ b/src/shared/recovery-key.c @@ -1,5 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ +#include "alloc-util.h" #include "memory-util.h" #include "random-util.h" #include "recovery-key.h" From 793e18771891f0dac8855a594473f87a6e7a117d Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Sat, 12 Apr 2025 19:45:49 +0200 Subject: [PATCH 13/15] basic: Remove circular dependency between process-util.h and pidref.h --- src/basic/capability-util.c | 1 + src/basic/pidref.h | 14 ++++++-------- src/libsystemd/sd-bus/bus-objects.c | 1 + src/libsystemd/sd-bus/bus-slot.c | 1 + src/login/logind-session-dbus.c | 1 + src/login/logind-utmp.c | 1 + src/login/logind-varlink.c | 1 + src/machine/image-varlink.c | 1 + src/ptyfwd/ptyfwd-tool.c | 1 + src/shared/notify-recv.c | 1 + src/shared/pretty-print.h | 2 ++ src/test/test-display-quota.c | 1 + src/udev/udev-watch.c | 2 ++ src/varlinkctl/varlinkctl.c | 1 + 14 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/basic/capability-util.c b/src/basic/capability-util.c index 0b544ea64a..0aaf8c3807 100644 --- a/src/basic/capability-util.c +++ b/src/basic/capability-util.c @@ -20,6 +20,7 @@ #include "macro.h" #include "parse-util.h" #include "pidref.h" +#include "process-util.h" #include "stat-util.h" #include "user-util.h" diff --git a/src/basic/pidref.h b/src/basic/pidref.h index b71c3bd9d0..064b9d851a 100644 --- a/src/basic/pidref.h +++ b/src/basic/pidref.h @@ -1,10 +1,8 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once -typedef struct PidRef PidRef; - #include "macro.h" -#include "process-util.h" +#include "memory-util.h" /* An embeddable structure carrying a reference to a process. Supposed to be used when tracking processes * continuously. This combines a PID, a modern Linux pidfd and the 64bit inode number of the pidfd into one @@ -29,22 +27,22 @@ typedef struct PidRef PidRef; * process. Moreover, most operations will fail with -EREMOTE. Only PidRef structures that are not marked * *unset* can be marked *remote*. */ -struct PidRef { - pid_t pid; /* > 0 if the PidRef is set, otherwise set to PID_AUTOMATIC if automatic mode is - * desired, or 0 otherwise. */ +typedef struct PidRef { + pid_t pid; /* > 0 if the PidRef is set, otherwise set to INT_MIN (PID_AUTOMATIC) if automatic + * mode is desired, or 0 otherwise. */ int fd; /* only valid if pidfd are available in the kernel, and we manage to get an fd. If we * know that the PID is not from the local machine we set this to -EREMOTE, otherwise * we use -EBADF as indicator the fd is invalid. */ uint64_t fd_id; /* the inode number of pidfd. only useful in kernel 6.9+ where pidfds live in their own pidfs and each process comes with a unique inode number */ -}; +} PidRef; #define PIDREF_NULL (PidRef) { .fd = -EBADF } /* A special pidref value that we are using when a PID shall be automatically acquired from some surrounding * context, for example connection peer. Much like PIDREF_NULL it will be considered unset by * pidref_is_set(). */ -#define PIDREF_AUTOMATIC (const PidRef) { .pid = PID_AUTOMATIC, .fd = -EBADF } +#define PIDREF_AUTOMATIC (const PidRef) { .pid = (pid_t) INT_MIN, .fd = -EBADF } /* Turns a pid_t into a PidRef structure on-the-fly *without* acquiring a pidfd for it. (As opposed to * pidref_set_pid() which does so *with* acquiring one, see below) */ diff --git a/src/libsystemd/sd-bus/bus-objects.c b/src/libsystemd/sd-bus/bus-objects.c index 2e3c4e0d68..37f9495138 100644 --- a/src/libsystemd/sd-bus/bus-objects.c +++ b/src/libsystemd/sd-bus/bus-objects.c @@ -11,6 +11,7 @@ #include "bus-slot.h" #include "bus-type.h" #include "log.h" +#include "set.h" #include "string-util.h" #include "strv.h" diff --git a/src/libsystemd/sd-bus/bus-slot.c b/src/libsystemd/sd-bus/bus-slot.c index 25272dbc0f..ed9da96638 100644 --- a/src/libsystemd/sd-bus/bus-slot.c +++ b/src/libsystemd/sd-bus/bus-slot.c @@ -7,6 +7,7 @@ #include "bus-objects.h" #include "bus-slot.h" #include "log.h" +#include "set.h" #include "string-util.h" sd_bus_slot *bus_slot_allocate( diff --git a/src/login/logind-session-dbus.c b/src/login/logind-session-dbus.c index 5e374ae91e..3a00a700c9 100644 --- a/src/login/logind-session-dbus.c +++ b/src/login/logind-session-dbus.c @@ -10,6 +10,7 @@ #include "bus-util.h" #include "devnum-util.h" #include "fd-util.h" +#include "format-util.h" #include "logind-brightness.h" #include "logind-dbus.h" #include "logind-polkit.h" diff --git a/src/login/logind-utmp.c b/src/login/logind-utmp.c index 9b6f4adcf0..47a293914b 100644 --- a/src/login/logind-utmp.c +++ b/src/login/logind-utmp.c @@ -2,6 +2,7 @@ #include "logind-utmp.h" #include "path-util.h" +#include "process-util.h" #include "utmp-wtmp.h" int manager_read_utmp(Manager *m) { diff --git a/src/login/logind-varlink.c b/src/login/logind-varlink.c index 83f0c55531..d812d81b20 100644 --- a/src/login/logind-varlink.c +++ b/src/login/logind-varlink.c @@ -2,6 +2,7 @@ #include "cgroup-util.h" #include "fd-util.h" +#include "format-util.h" #include "json-util.h" #include "logind.h" #include "logind-dbus.h" diff --git a/src/machine/image-varlink.c b/src/machine/image-varlink.c index eb0fc12dc6..fc05edf8e1 100644 --- a/src/machine/image-varlink.c +++ b/src/machine/image-varlink.c @@ -13,6 +13,7 @@ #include "json-util.h" #include "machine.h" #include "machine-pool.h" +#include "process-util.h" #include "string-util.h" typedef struct ImageUpdateParameters { diff --git a/src/ptyfwd/ptyfwd-tool.c b/src/ptyfwd/ptyfwd-tool.c index 26bb295b3f..16a49ccdc1 100644 --- a/src/ptyfwd/ptyfwd-tool.c +++ b/src/ptyfwd/ptyfwd-tool.c @@ -10,6 +10,7 @@ #include "log.h" #include "main-func.h" #include "pretty-print.h" +#include "process-util.h" #include "ptyfwd.h" #include "strv.h" diff --git a/src/shared/notify-recv.c b/src/shared/notify-recv.c index ac790da2a8..0e64bdde04 100644 --- a/src/shared/notify-recv.c +++ b/src/shared/notify-recv.c @@ -4,6 +4,7 @@ #include "fd-util.h" #include "log.h" #include "notify-recv.h" +#include "process-util.h" #include "socket-util.h" #include "strv.h" #include "user-util.h" diff --git a/src/shared/pretty-print.h b/src/shared/pretty-print.h index 16966c3ab8..6f44955076 100644 --- a/src/shared/pretty-print.h +++ b/src/shared/pretty-print.h @@ -1,6 +1,8 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once +#include + #include "ansi-color.h" #include "assert-util.h" #include "glyph-util.h" diff --git a/src/test/test-display-quota.c b/src/test/test-display-quota.c index e3b67526a3..68ecfc8d01 100644 --- a/src/test/test-display-quota.c +++ b/src/test/test-display-quota.c @@ -2,6 +2,7 @@ #include "bitfield.h" #include "fd-util.h" +#include "format-util.h" #include "log.h" #include "main-func.h" #include "missing_syscall.h" diff --git a/src/udev/udev-watch.c b/src/udev/udev-watch.c index 506c3e0835..2d3127eee9 100644 --- a/src/udev/udev-watch.c +++ b/src/udev/udev-watch.c @@ -15,7 +15,9 @@ #include "inotify-util.h" #include "mkdir.h" #include "parse-util.h" +#include "process-util.h" #include "rm-rf.h" +#include "set.h" #include "stdio-util.h" #include "string-util.h" #include "udev-manager.h" diff --git a/src/varlinkctl/varlinkctl.c b/src/varlinkctl/varlinkctl.c index 3bcb34b642..7b2ff301aa 100644 --- a/src/varlinkctl/varlinkctl.c +++ b/src/varlinkctl/varlinkctl.c @@ -17,6 +17,7 @@ #include "parse-argument.h" #include "path-util.h" #include "pretty-print.h" +#include "process-util.h" #include "terminal-util.h" #include "varlink-idl-util.h" #include "varlink-util.h" From 9fea5b42509bd8e849d23aaa4631d708ae97b064 Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Thu, 17 Apr 2025 21:19:12 +0200 Subject: [PATCH 14/15] tree-wide: Remove references to src/shared/linux This directory doesn't exist anymore. --- LICENSES/README.md | 4 ++-- coccinelle/run-coccinelle.sh | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/LICENSES/README.md b/LICENSES/README.md index f8668be820..9b3325d57f 100644 --- a/LICENSES/README.md +++ b/LICENSES/README.md @@ -32,14 +32,14 @@ The following exceptions apply: * some sources under src/udev/ are licensed under **GPL-2.0-or-later**, so all udev programs (`systemd-udevd`, `udevadm`, and the udev builtins and test programs) are also distributed under **GPL-2.0-or-later**. - * the header files contained in src/basic/linux/ and src/shared/linux/ are copied + * the header files contained in src/basic/linux/ are copied verbatim from the Linux kernel source tree and are licensed under **GPL-2.0 WITH Linux-syscall-note** and are used within the scope of the Linux-syscall-note exception provisions * the following sources are licensed under the **LGPL-2.0-or-later** license: - src/basic/utf8.c - src/shared/initreq.h - * the src/shared/linux/bpf_insn.h header is copied from the Linux kernel + * the src/basic/linux/bpf_insn.h header is copied from the Linux kernel source tree and is licensed under either **BSD-2-Clause** or **GPL-2.0-only**, and thus is included in the systemd build under the BSD-2-Clause license. * The src/basic/linux/wireguard.h header is copied from the Linux kernel diff --git a/coccinelle/run-coccinelle.sh b/coccinelle/run-coccinelle.sh index d4bccdc505..c4bc29856d 100755 --- a/coccinelle/run-coccinelle.sh +++ b/coccinelle/run-coccinelle.sh @@ -5,7 +5,6 @@ set -e # Exclude following paths from the Coccinelle transformations EXCLUDED_PATHS=( "src/boot/efi/*" - "src/shared/linux/*" "src/basic/linux/*" # Symlinked to test-bus-vtable-cc.cc, which causes issues with the IN_SET macro "src/libsystemd/sd-bus/test-bus-vtable.c" From 44c2c9a0363e7529be21039a74d1dc250de0642a Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Sat, 12 Apr 2025 19:36:48 +0200 Subject: [PATCH 15/15] tree-wide: Mark linux and sys includes as system includes Even though these are in our tree, we should still treat them as system includes which helps various tools (clangd, iwyu, ...) understand that these are system includes and <> should be used instead of "". --- LICENSES/README.md | 8 ++++---- coccinelle/run-coccinelle.sh | 2 +- meson.build | 17 ++++++++++++----- src/basic/{ => include}/linux/auto_dev-ioctl.h | 0 src/basic/{ => include}/linux/auto_fs.h | 0 src/basic/{ => include}/linux/batman_adv.h | 0 src/basic/{ => include}/linux/bpf.h | 0 src/basic/{ => include}/linux/bpf_common.h | 0 src/basic/{ => include}/linux/bpf_insn.h | 0 src/basic/{ => include}/linux/btrfs.h | 0 src/basic/{ => include}/linux/btrfs_tree.h | 0 src/basic/{ => include}/linux/can/netlink.h | 0 src/basic/{ => include}/linux/can/vxcan.h | 0 src/basic/{ => include}/linux/capability.h | 0 src/basic/{ => include}/linux/cfm_bridge.h | 0 src/basic/{ => include}/linux/const.h | 0 src/basic/{ => include}/linux/dm-ioctl.h | 0 src/basic/{ => include}/linux/ethtool.h | 0 src/basic/{ => include}/linux/fib_rules.h | 0 src/basic/{ => include}/linux/filter.h | 0 src/basic/{ => include}/linux/fou.h | 0 src/basic/{ => include}/linux/fs.h | 0 src/basic/{ => include}/linux/fscrypt.h | 0 src/basic/{ => include}/linux/genetlink.h | 0 src/basic/{ => include}/linux/hdlc/ioctl.h | 0 src/basic/{ => include}/linux/hid.h | 0 src/basic/{ => include}/linux/hidraw.h | 0 src/basic/{ => include}/linux/if.h | 0 src/basic/{ => include}/linux/if_addr.h | 0 src/basic/{ => include}/linux/if_addrlabel.h | 0 src/basic/{ => include}/linux/if_arp.h | 0 src/basic/{ => include}/linux/if_bonding.h | 0 src/basic/{ => include}/linux/if_bridge.h | 0 src/basic/{ => include}/linux/if_ether.h | 0 src/basic/{ => include}/linux/if_infiniband.h | 0 src/basic/{ => include}/linux/if_link.h | 0 src/basic/{ => include}/linux/if_macsec.h | 0 src/basic/{ => include}/linux/if_packet.h | 0 src/basic/{ => include}/linux/if_tun.h | 0 src/basic/{ => include}/linux/if_tunnel.h | 0 src/basic/{ => include}/linux/if_vlan.h | 0 src/basic/{ => include}/linux/in.h | 0 src/basic/{ => include}/linux/in6.h | 0 .../{ => include}/linux/input-event-codes.h | 0 src/basic/{ => include}/linux/input.h | 0 src/basic/{ => include}/linux/ioprio.h | 0 src/basic/{ => include}/linux/ip.h | 0 src/basic/{ => include}/linux/ip6_tunnel.h | 0 src/basic/{ => include}/linux/ipv6.h | 0 src/basic/{ => include}/linux/ipv6_route.h | 0 src/basic/{ => include}/linux/keyctl.h | 0 src/basic/{ => include}/linux/l2tp.h | 0 src/basic/{ => include}/linux/libc-compat.h | 0 src/basic/{ => include}/linux/limits.h | 0 src/basic/{ => include}/linux/loop.h | 0 src/basic/{ => include}/linux/magic.h | 0 src/basic/{ => include}/linux/mount.h | 0 src/basic/{ => include}/linux/mrp_bridge.h | 0 src/basic/{ => include}/linux/neighbour.h | 0 src/basic/{ => include}/linux/net_namespace.h | 0 src/basic/{ => include}/linux/netdevice.h | 0 src/basic/{ => include}/linux/netfilter.h | 0 .../linux/netfilter/nf_conntrack_common.h | 0 .../linux/netfilter/nf_conntrack_tuple_common.h | 0 .../{ => include}/linux/netfilter/nf_nat.h | 0 .../{ => include}/linux/netfilter/nf_tables.h | 0 .../{ => include}/linux/netfilter/nfnetlink.h | 0 .../linux/netfilter/nfnetlink_compat.h | 0 .../{ => include}/linux/netfilter/x_tables.h | 0 .../{ => include}/linux/netfilter/xt_addrtype.h | 0 .../{ => include}/linux/netfilter/xt_tcpudp.h | 0 src/basic/{ => include}/linux/netfilter_ipv4.h | 0 .../linux/netfilter_ipv4/ip_tables.h | 0 src/basic/{ => include}/linux/netlink.h | 0 src/basic/{ => include}/linux/nexthop.h | 0 src/basic/{ => include}/linux/nl80211.h | 0 src/basic/{ => include}/linux/pkt_sched.h | 0 src/basic/{ => include}/linux/prctl.h | 0 src/basic/{ => include}/linux/rtnetlink.h | 0 src/basic/{ => include}/linux/socket.h | 0 src/basic/{ => include}/linux/sockios.h | 0 src/basic/{ => include}/linux/stat.h | 0 src/basic/{ => include}/linux/stddef.h | 0 src/basic/{ => include}/linux/update.sh | 0 src/basic/{ => include}/linux/veth.h | 0 src/basic/{ => include}/linux/vm_sockets.h | 0 src/basic/{ => include}/linux/wireguard.h | 0 src/basic/{ => include}/sys/mount.h | 0 src/basic/meson.build | 6 +++--- src/shared/meson.build | 4 ++-- src/udev/meson.build | 2 +- 91 files changed, 23 insertions(+), 16 deletions(-) rename src/basic/{ => include}/linux/auto_dev-ioctl.h (100%) rename src/basic/{ => include}/linux/auto_fs.h (100%) rename src/basic/{ => include}/linux/batman_adv.h (100%) rename src/basic/{ => include}/linux/bpf.h (100%) rename src/basic/{ => include}/linux/bpf_common.h (100%) rename src/basic/{ => include}/linux/bpf_insn.h (100%) rename src/basic/{ => include}/linux/btrfs.h (100%) rename src/basic/{ => include}/linux/btrfs_tree.h (100%) rename src/basic/{ => include}/linux/can/netlink.h (100%) rename src/basic/{ => include}/linux/can/vxcan.h (100%) rename src/basic/{ => include}/linux/capability.h (100%) rename src/basic/{ => include}/linux/cfm_bridge.h (100%) rename src/basic/{ => include}/linux/const.h (100%) rename src/basic/{ => include}/linux/dm-ioctl.h (100%) rename src/basic/{ => include}/linux/ethtool.h (100%) rename src/basic/{ => include}/linux/fib_rules.h (100%) rename src/basic/{ => include}/linux/filter.h (100%) rename src/basic/{ => include}/linux/fou.h (100%) rename src/basic/{ => include}/linux/fs.h (100%) rename src/basic/{ => include}/linux/fscrypt.h (100%) rename src/basic/{ => include}/linux/genetlink.h (100%) rename src/basic/{ => include}/linux/hdlc/ioctl.h (100%) rename src/basic/{ => include}/linux/hid.h (100%) rename src/basic/{ => include}/linux/hidraw.h (100%) rename src/basic/{ => include}/linux/if.h (100%) rename src/basic/{ => include}/linux/if_addr.h (100%) rename src/basic/{ => include}/linux/if_addrlabel.h (100%) rename src/basic/{ => include}/linux/if_arp.h (100%) rename src/basic/{ => include}/linux/if_bonding.h (100%) rename src/basic/{ => include}/linux/if_bridge.h (100%) rename src/basic/{ => include}/linux/if_ether.h (100%) rename src/basic/{ => include}/linux/if_infiniband.h (100%) rename src/basic/{ => include}/linux/if_link.h (100%) rename src/basic/{ => include}/linux/if_macsec.h (100%) rename src/basic/{ => include}/linux/if_packet.h (100%) rename src/basic/{ => include}/linux/if_tun.h (100%) rename src/basic/{ => include}/linux/if_tunnel.h (100%) rename src/basic/{ => include}/linux/if_vlan.h (100%) rename src/basic/{ => include}/linux/in.h (100%) rename src/basic/{ => include}/linux/in6.h (100%) rename src/basic/{ => include}/linux/input-event-codes.h (100%) rename src/basic/{ => include}/linux/input.h (100%) rename src/basic/{ => include}/linux/ioprio.h (100%) rename src/basic/{ => include}/linux/ip.h (100%) rename src/basic/{ => include}/linux/ip6_tunnel.h (100%) rename src/basic/{ => include}/linux/ipv6.h (100%) rename src/basic/{ => include}/linux/ipv6_route.h (100%) rename src/basic/{ => include}/linux/keyctl.h (100%) rename src/basic/{ => include}/linux/l2tp.h (100%) rename src/basic/{ => include}/linux/libc-compat.h (100%) rename src/basic/{ => include}/linux/limits.h (100%) rename src/basic/{ => include}/linux/loop.h (100%) rename src/basic/{ => include}/linux/magic.h (100%) rename src/basic/{ => include}/linux/mount.h (100%) rename src/basic/{ => include}/linux/mrp_bridge.h (100%) rename src/basic/{ => include}/linux/neighbour.h (100%) rename src/basic/{ => include}/linux/net_namespace.h (100%) rename src/basic/{ => include}/linux/netdevice.h (100%) rename src/basic/{ => include}/linux/netfilter.h (100%) rename src/basic/{ => include}/linux/netfilter/nf_conntrack_common.h (100%) rename src/basic/{ => include}/linux/netfilter/nf_conntrack_tuple_common.h (100%) rename src/basic/{ => include}/linux/netfilter/nf_nat.h (100%) rename src/basic/{ => include}/linux/netfilter/nf_tables.h (100%) rename src/basic/{ => include}/linux/netfilter/nfnetlink.h (100%) rename src/basic/{ => include}/linux/netfilter/nfnetlink_compat.h (100%) rename src/basic/{ => include}/linux/netfilter/x_tables.h (100%) rename src/basic/{ => include}/linux/netfilter/xt_addrtype.h (100%) rename src/basic/{ => include}/linux/netfilter/xt_tcpudp.h (100%) rename src/basic/{ => include}/linux/netfilter_ipv4.h (100%) rename src/basic/{ => include}/linux/netfilter_ipv4/ip_tables.h (100%) rename src/basic/{ => include}/linux/netlink.h (100%) rename src/basic/{ => include}/linux/nexthop.h (100%) rename src/basic/{ => include}/linux/nl80211.h (100%) rename src/basic/{ => include}/linux/pkt_sched.h (100%) rename src/basic/{ => include}/linux/prctl.h (100%) rename src/basic/{ => include}/linux/rtnetlink.h (100%) rename src/basic/{ => include}/linux/socket.h (100%) rename src/basic/{ => include}/linux/sockios.h (100%) rename src/basic/{ => include}/linux/stat.h (100%) rename src/basic/{ => include}/linux/stddef.h (100%) rename src/basic/{ => include}/linux/update.sh (100%) rename src/basic/{ => include}/linux/veth.h (100%) rename src/basic/{ => include}/linux/vm_sockets.h (100%) rename src/basic/{ => include}/linux/wireguard.h (100%) rename src/basic/{ => include}/sys/mount.h (100%) diff --git a/LICENSES/README.md b/LICENSES/README.md index 9b3325d57f..f68c451bfb 100644 --- a/LICENSES/README.md +++ b/LICENSES/README.md @@ -32,23 +32,23 @@ The following exceptions apply: * some sources under src/udev/ are licensed under **GPL-2.0-or-later**, so all udev programs (`systemd-udevd`, `udevadm`, and the udev builtins and test programs) are also distributed under **GPL-2.0-or-later**. - * the header files contained in src/basic/linux/ are copied + * the header files contained in src/basic/include/linux are copied verbatim from the Linux kernel source tree and are licensed under **GPL-2.0 WITH Linux-syscall-note** and are used within the scope of the Linux-syscall-note exception provisions * the following sources are licensed under the **LGPL-2.0-or-later** license: - src/basic/utf8.c - src/shared/initreq.h - * the src/basic/linux/bpf_insn.h header is copied from the Linux kernel + * the src/basic/include/linux/bpf_insn.h header is copied from the Linux kernel source tree and is licensed under either **BSD-2-Clause** or **GPL-2.0-only**, and thus is included in the systemd build under the BSD-2-Clause license. - * The src/basic/linux/wireguard.h header is copied from the Linux kernel + * The src/basic/include/linux/wireguard.h header is copied from the Linux kernel source tree and is licensed under either **MIT** or **GPL-2.0 WITH Linux-syscall-note**, and thus is included in the systemd build under the MIT license. * the following sources are licensed under the **MIT** license (in case of our scripts, to facilitate copying and reuse of those helpers to other projects): - hwdb.d/parse_hwdb.py - - src/basic/linux/batman_adv.h + - src/basic/include/linux/batman_adv.h - src/basic/sparse-endian.h - tools/catalog-report.py * the following sources are licensed under the **CC0-1.0** license: diff --git a/coccinelle/run-coccinelle.sh b/coccinelle/run-coccinelle.sh index c4bc29856d..19ae59e4e5 100755 --- a/coccinelle/run-coccinelle.sh +++ b/coccinelle/run-coccinelle.sh @@ -5,7 +5,7 @@ set -e # Exclude following paths from the Coccinelle transformations EXCLUDED_PATHS=( "src/boot/efi/*" - "src/basic/linux/*" + "src/basic/include/linux/*" # Symlinked to test-bus-vtable-cc.cc, which causes issues with the IN_SET macro "src/libsystemd/sd-bus/test-bus-vtable.c" "src/libsystemd/sd-journal/lookup3.c" diff --git a/meson.build b/meson.build index e90ae8f13f..ac68609643 100644 --- a/meson.build +++ b/meson.build @@ -2053,11 +2053,18 @@ boot_stubs = [] build_dir_include = include_directories('.') -basic_includes = include_directories( - 'src/basic', - 'src/fundamental', - 'src/systemd', - '.') +basic_includes = [ + include_directories( + 'src/basic', + 'src/fundamental', + 'src/systemd', + '.', + ), + include_directories( + 'src/basic/include', + is_system : true, + ), +] libsystemd_includes = [basic_includes, include_directories( 'src/libsystemd/sd-bus', diff --git a/src/basic/linux/auto_dev-ioctl.h b/src/basic/include/linux/auto_dev-ioctl.h similarity index 100% rename from src/basic/linux/auto_dev-ioctl.h rename to src/basic/include/linux/auto_dev-ioctl.h diff --git a/src/basic/linux/auto_fs.h b/src/basic/include/linux/auto_fs.h similarity index 100% rename from src/basic/linux/auto_fs.h rename to src/basic/include/linux/auto_fs.h diff --git a/src/basic/linux/batman_adv.h b/src/basic/include/linux/batman_adv.h similarity index 100% rename from src/basic/linux/batman_adv.h rename to src/basic/include/linux/batman_adv.h diff --git a/src/basic/linux/bpf.h b/src/basic/include/linux/bpf.h similarity index 100% rename from src/basic/linux/bpf.h rename to src/basic/include/linux/bpf.h diff --git a/src/basic/linux/bpf_common.h b/src/basic/include/linux/bpf_common.h similarity index 100% rename from src/basic/linux/bpf_common.h rename to src/basic/include/linux/bpf_common.h diff --git a/src/basic/linux/bpf_insn.h b/src/basic/include/linux/bpf_insn.h similarity index 100% rename from src/basic/linux/bpf_insn.h rename to src/basic/include/linux/bpf_insn.h diff --git a/src/basic/linux/btrfs.h b/src/basic/include/linux/btrfs.h similarity index 100% rename from src/basic/linux/btrfs.h rename to src/basic/include/linux/btrfs.h diff --git a/src/basic/linux/btrfs_tree.h b/src/basic/include/linux/btrfs_tree.h similarity index 100% rename from src/basic/linux/btrfs_tree.h rename to src/basic/include/linux/btrfs_tree.h diff --git a/src/basic/linux/can/netlink.h b/src/basic/include/linux/can/netlink.h similarity index 100% rename from src/basic/linux/can/netlink.h rename to src/basic/include/linux/can/netlink.h diff --git a/src/basic/linux/can/vxcan.h b/src/basic/include/linux/can/vxcan.h similarity index 100% rename from src/basic/linux/can/vxcan.h rename to src/basic/include/linux/can/vxcan.h diff --git a/src/basic/linux/capability.h b/src/basic/include/linux/capability.h similarity index 100% rename from src/basic/linux/capability.h rename to src/basic/include/linux/capability.h diff --git a/src/basic/linux/cfm_bridge.h b/src/basic/include/linux/cfm_bridge.h similarity index 100% rename from src/basic/linux/cfm_bridge.h rename to src/basic/include/linux/cfm_bridge.h diff --git a/src/basic/linux/const.h b/src/basic/include/linux/const.h similarity index 100% rename from src/basic/linux/const.h rename to src/basic/include/linux/const.h diff --git a/src/basic/linux/dm-ioctl.h b/src/basic/include/linux/dm-ioctl.h similarity index 100% rename from src/basic/linux/dm-ioctl.h rename to src/basic/include/linux/dm-ioctl.h diff --git a/src/basic/linux/ethtool.h b/src/basic/include/linux/ethtool.h similarity index 100% rename from src/basic/linux/ethtool.h rename to src/basic/include/linux/ethtool.h diff --git a/src/basic/linux/fib_rules.h b/src/basic/include/linux/fib_rules.h similarity index 100% rename from src/basic/linux/fib_rules.h rename to src/basic/include/linux/fib_rules.h diff --git a/src/basic/linux/filter.h b/src/basic/include/linux/filter.h similarity index 100% rename from src/basic/linux/filter.h rename to src/basic/include/linux/filter.h diff --git a/src/basic/linux/fou.h b/src/basic/include/linux/fou.h similarity index 100% rename from src/basic/linux/fou.h rename to src/basic/include/linux/fou.h diff --git a/src/basic/linux/fs.h b/src/basic/include/linux/fs.h similarity index 100% rename from src/basic/linux/fs.h rename to src/basic/include/linux/fs.h diff --git a/src/basic/linux/fscrypt.h b/src/basic/include/linux/fscrypt.h similarity index 100% rename from src/basic/linux/fscrypt.h rename to src/basic/include/linux/fscrypt.h diff --git a/src/basic/linux/genetlink.h b/src/basic/include/linux/genetlink.h similarity index 100% rename from src/basic/linux/genetlink.h rename to src/basic/include/linux/genetlink.h diff --git a/src/basic/linux/hdlc/ioctl.h b/src/basic/include/linux/hdlc/ioctl.h similarity index 100% rename from src/basic/linux/hdlc/ioctl.h rename to src/basic/include/linux/hdlc/ioctl.h diff --git a/src/basic/linux/hid.h b/src/basic/include/linux/hid.h similarity index 100% rename from src/basic/linux/hid.h rename to src/basic/include/linux/hid.h diff --git a/src/basic/linux/hidraw.h b/src/basic/include/linux/hidraw.h similarity index 100% rename from src/basic/linux/hidraw.h rename to src/basic/include/linux/hidraw.h diff --git a/src/basic/linux/if.h b/src/basic/include/linux/if.h similarity index 100% rename from src/basic/linux/if.h rename to src/basic/include/linux/if.h diff --git a/src/basic/linux/if_addr.h b/src/basic/include/linux/if_addr.h similarity index 100% rename from src/basic/linux/if_addr.h rename to src/basic/include/linux/if_addr.h diff --git a/src/basic/linux/if_addrlabel.h b/src/basic/include/linux/if_addrlabel.h similarity index 100% rename from src/basic/linux/if_addrlabel.h rename to src/basic/include/linux/if_addrlabel.h diff --git a/src/basic/linux/if_arp.h b/src/basic/include/linux/if_arp.h similarity index 100% rename from src/basic/linux/if_arp.h rename to src/basic/include/linux/if_arp.h diff --git a/src/basic/linux/if_bonding.h b/src/basic/include/linux/if_bonding.h similarity index 100% rename from src/basic/linux/if_bonding.h rename to src/basic/include/linux/if_bonding.h diff --git a/src/basic/linux/if_bridge.h b/src/basic/include/linux/if_bridge.h similarity index 100% rename from src/basic/linux/if_bridge.h rename to src/basic/include/linux/if_bridge.h diff --git a/src/basic/linux/if_ether.h b/src/basic/include/linux/if_ether.h similarity index 100% rename from src/basic/linux/if_ether.h rename to src/basic/include/linux/if_ether.h diff --git a/src/basic/linux/if_infiniband.h b/src/basic/include/linux/if_infiniband.h similarity index 100% rename from src/basic/linux/if_infiniband.h rename to src/basic/include/linux/if_infiniband.h diff --git a/src/basic/linux/if_link.h b/src/basic/include/linux/if_link.h similarity index 100% rename from src/basic/linux/if_link.h rename to src/basic/include/linux/if_link.h diff --git a/src/basic/linux/if_macsec.h b/src/basic/include/linux/if_macsec.h similarity index 100% rename from src/basic/linux/if_macsec.h rename to src/basic/include/linux/if_macsec.h diff --git a/src/basic/linux/if_packet.h b/src/basic/include/linux/if_packet.h similarity index 100% rename from src/basic/linux/if_packet.h rename to src/basic/include/linux/if_packet.h diff --git a/src/basic/linux/if_tun.h b/src/basic/include/linux/if_tun.h similarity index 100% rename from src/basic/linux/if_tun.h rename to src/basic/include/linux/if_tun.h diff --git a/src/basic/linux/if_tunnel.h b/src/basic/include/linux/if_tunnel.h similarity index 100% rename from src/basic/linux/if_tunnel.h rename to src/basic/include/linux/if_tunnel.h diff --git a/src/basic/linux/if_vlan.h b/src/basic/include/linux/if_vlan.h similarity index 100% rename from src/basic/linux/if_vlan.h rename to src/basic/include/linux/if_vlan.h diff --git a/src/basic/linux/in.h b/src/basic/include/linux/in.h similarity index 100% rename from src/basic/linux/in.h rename to src/basic/include/linux/in.h diff --git a/src/basic/linux/in6.h b/src/basic/include/linux/in6.h similarity index 100% rename from src/basic/linux/in6.h rename to src/basic/include/linux/in6.h diff --git a/src/basic/linux/input-event-codes.h b/src/basic/include/linux/input-event-codes.h similarity index 100% rename from src/basic/linux/input-event-codes.h rename to src/basic/include/linux/input-event-codes.h diff --git a/src/basic/linux/input.h b/src/basic/include/linux/input.h similarity index 100% rename from src/basic/linux/input.h rename to src/basic/include/linux/input.h diff --git a/src/basic/linux/ioprio.h b/src/basic/include/linux/ioprio.h similarity index 100% rename from src/basic/linux/ioprio.h rename to src/basic/include/linux/ioprio.h diff --git a/src/basic/linux/ip.h b/src/basic/include/linux/ip.h similarity index 100% rename from src/basic/linux/ip.h rename to src/basic/include/linux/ip.h diff --git a/src/basic/linux/ip6_tunnel.h b/src/basic/include/linux/ip6_tunnel.h similarity index 100% rename from src/basic/linux/ip6_tunnel.h rename to src/basic/include/linux/ip6_tunnel.h diff --git a/src/basic/linux/ipv6.h b/src/basic/include/linux/ipv6.h similarity index 100% rename from src/basic/linux/ipv6.h rename to src/basic/include/linux/ipv6.h diff --git a/src/basic/linux/ipv6_route.h b/src/basic/include/linux/ipv6_route.h similarity index 100% rename from src/basic/linux/ipv6_route.h rename to src/basic/include/linux/ipv6_route.h diff --git a/src/basic/linux/keyctl.h b/src/basic/include/linux/keyctl.h similarity index 100% rename from src/basic/linux/keyctl.h rename to src/basic/include/linux/keyctl.h diff --git a/src/basic/linux/l2tp.h b/src/basic/include/linux/l2tp.h similarity index 100% rename from src/basic/linux/l2tp.h rename to src/basic/include/linux/l2tp.h diff --git a/src/basic/linux/libc-compat.h b/src/basic/include/linux/libc-compat.h similarity index 100% rename from src/basic/linux/libc-compat.h rename to src/basic/include/linux/libc-compat.h diff --git a/src/basic/linux/limits.h b/src/basic/include/linux/limits.h similarity index 100% rename from src/basic/linux/limits.h rename to src/basic/include/linux/limits.h diff --git a/src/basic/linux/loop.h b/src/basic/include/linux/loop.h similarity index 100% rename from src/basic/linux/loop.h rename to src/basic/include/linux/loop.h diff --git a/src/basic/linux/magic.h b/src/basic/include/linux/magic.h similarity index 100% rename from src/basic/linux/magic.h rename to src/basic/include/linux/magic.h diff --git a/src/basic/linux/mount.h b/src/basic/include/linux/mount.h similarity index 100% rename from src/basic/linux/mount.h rename to src/basic/include/linux/mount.h diff --git a/src/basic/linux/mrp_bridge.h b/src/basic/include/linux/mrp_bridge.h similarity index 100% rename from src/basic/linux/mrp_bridge.h rename to src/basic/include/linux/mrp_bridge.h diff --git a/src/basic/linux/neighbour.h b/src/basic/include/linux/neighbour.h similarity index 100% rename from src/basic/linux/neighbour.h rename to src/basic/include/linux/neighbour.h diff --git a/src/basic/linux/net_namespace.h b/src/basic/include/linux/net_namespace.h similarity index 100% rename from src/basic/linux/net_namespace.h rename to src/basic/include/linux/net_namespace.h diff --git a/src/basic/linux/netdevice.h b/src/basic/include/linux/netdevice.h similarity index 100% rename from src/basic/linux/netdevice.h rename to src/basic/include/linux/netdevice.h diff --git a/src/basic/linux/netfilter.h b/src/basic/include/linux/netfilter.h similarity index 100% rename from src/basic/linux/netfilter.h rename to src/basic/include/linux/netfilter.h diff --git a/src/basic/linux/netfilter/nf_conntrack_common.h b/src/basic/include/linux/netfilter/nf_conntrack_common.h similarity index 100% rename from src/basic/linux/netfilter/nf_conntrack_common.h rename to src/basic/include/linux/netfilter/nf_conntrack_common.h diff --git a/src/basic/linux/netfilter/nf_conntrack_tuple_common.h b/src/basic/include/linux/netfilter/nf_conntrack_tuple_common.h similarity index 100% rename from src/basic/linux/netfilter/nf_conntrack_tuple_common.h rename to src/basic/include/linux/netfilter/nf_conntrack_tuple_common.h diff --git a/src/basic/linux/netfilter/nf_nat.h b/src/basic/include/linux/netfilter/nf_nat.h similarity index 100% rename from src/basic/linux/netfilter/nf_nat.h rename to src/basic/include/linux/netfilter/nf_nat.h diff --git a/src/basic/linux/netfilter/nf_tables.h b/src/basic/include/linux/netfilter/nf_tables.h similarity index 100% rename from src/basic/linux/netfilter/nf_tables.h rename to src/basic/include/linux/netfilter/nf_tables.h diff --git a/src/basic/linux/netfilter/nfnetlink.h b/src/basic/include/linux/netfilter/nfnetlink.h similarity index 100% rename from src/basic/linux/netfilter/nfnetlink.h rename to src/basic/include/linux/netfilter/nfnetlink.h diff --git a/src/basic/linux/netfilter/nfnetlink_compat.h b/src/basic/include/linux/netfilter/nfnetlink_compat.h similarity index 100% rename from src/basic/linux/netfilter/nfnetlink_compat.h rename to src/basic/include/linux/netfilter/nfnetlink_compat.h diff --git a/src/basic/linux/netfilter/x_tables.h b/src/basic/include/linux/netfilter/x_tables.h similarity index 100% rename from src/basic/linux/netfilter/x_tables.h rename to src/basic/include/linux/netfilter/x_tables.h diff --git a/src/basic/linux/netfilter/xt_addrtype.h b/src/basic/include/linux/netfilter/xt_addrtype.h similarity index 100% rename from src/basic/linux/netfilter/xt_addrtype.h rename to src/basic/include/linux/netfilter/xt_addrtype.h diff --git a/src/basic/linux/netfilter/xt_tcpudp.h b/src/basic/include/linux/netfilter/xt_tcpudp.h similarity index 100% rename from src/basic/linux/netfilter/xt_tcpudp.h rename to src/basic/include/linux/netfilter/xt_tcpudp.h diff --git a/src/basic/linux/netfilter_ipv4.h b/src/basic/include/linux/netfilter_ipv4.h similarity index 100% rename from src/basic/linux/netfilter_ipv4.h rename to src/basic/include/linux/netfilter_ipv4.h diff --git a/src/basic/linux/netfilter_ipv4/ip_tables.h b/src/basic/include/linux/netfilter_ipv4/ip_tables.h similarity index 100% rename from src/basic/linux/netfilter_ipv4/ip_tables.h rename to src/basic/include/linux/netfilter_ipv4/ip_tables.h diff --git a/src/basic/linux/netlink.h b/src/basic/include/linux/netlink.h similarity index 100% rename from src/basic/linux/netlink.h rename to src/basic/include/linux/netlink.h diff --git a/src/basic/linux/nexthop.h b/src/basic/include/linux/nexthop.h similarity index 100% rename from src/basic/linux/nexthop.h rename to src/basic/include/linux/nexthop.h diff --git a/src/basic/linux/nl80211.h b/src/basic/include/linux/nl80211.h similarity index 100% rename from src/basic/linux/nl80211.h rename to src/basic/include/linux/nl80211.h diff --git a/src/basic/linux/pkt_sched.h b/src/basic/include/linux/pkt_sched.h similarity index 100% rename from src/basic/linux/pkt_sched.h rename to src/basic/include/linux/pkt_sched.h diff --git a/src/basic/linux/prctl.h b/src/basic/include/linux/prctl.h similarity index 100% rename from src/basic/linux/prctl.h rename to src/basic/include/linux/prctl.h diff --git a/src/basic/linux/rtnetlink.h b/src/basic/include/linux/rtnetlink.h similarity index 100% rename from src/basic/linux/rtnetlink.h rename to src/basic/include/linux/rtnetlink.h diff --git a/src/basic/linux/socket.h b/src/basic/include/linux/socket.h similarity index 100% rename from src/basic/linux/socket.h rename to src/basic/include/linux/socket.h diff --git a/src/basic/linux/sockios.h b/src/basic/include/linux/sockios.h similarity index 100% rename from src/basic/linux/sockios.h rename to src/basic/include/linux/sockios.h diff --git a/src/basic/linux/stat.h b/src/basic/include/linux/stat.h similarity index 100% rename from src/basic/linux/stat.h rename to src/basic/include/linux/stat.h diff --git a/src/basic/linux/stddef.h b/src/basic/include/linux/stddef.h similarity index 100% rename from src/basic/linux/stddef.h rename to src/basic/include/linux/stddef.h diff --git a/src/basic/linux/update.sh b/src/basic/include/linux/update.sh similarity index 100% rename from src/basic/linux/update.sh rename to src/basic/include/linux/update.sh diff --git a/src/basic/linux/veth.h b/src/basic/include/linux/veth.h similarity index 100% rename from src/basic/linux/veth.h rename to src/basic/include/linux/veth.h diff --git a/src/basic/linux/vm_sockets.h b/src/basic/include/linux/vm_sockets.h similarity index 100% rename from src/basic/linux/vm_sockets.h rename to src/basic/include/linux/vm_sockets.h diff --git a/src/basic/linux/wireguard.h b/src/basic/include/linux/wireguard.h similarity index 100% rename from src/basic/linux/wireguard.h rename to src/basic/include/linux/wireguard.h diff --git a/src/basic/sys/mount.h b/src/basic/include/sys/mount.h similarity index 100% rename from src/basic/sys/mount.h rename to src/basic/include/sys/mount.h diff --git a/src/basic/meson.build b/src/basic/meson.build index 9db77a95a6..3396e395de 100644 --- a/src/basic/meson.build +++ b/src/basic/meson.build @@ -133,14 +133,14 @@ generate_arphrd_list = find_program('generate-arphrd-list.sh') arphrd_list_txt = custom_target( 'arphrd-list.txt', output : 'arphrd-list.txt', - command : [generate_arphrd_list, cpp, files('linux/if_arp.h'), config_h], + command : [generate_arphrd_list, cpp, files('include/linux/if_arp.h'), config_h], capture : true) generate_cap_list = find_program('generate-cap-list.sh') cap_list_txt = custom_target( 'cap-list.txt', output : 'cap-list.txt', - command : [generate_cap_list, cpp, files('linux/capability.h')], + command : [generate_cap_list, cpp, files('include/linux/capability.h')], capture : true) generate_errno_list = find_program('generate-errno-list.sh') @@ -238,7 +238,7 @@ run_target( ############################################################ filesystem_includes = files( - 'linux/magic.h', + 'include/linux/magic.h', 'missing_magic.h', ) diff --git a/src/shared/meson.build b/src/shared/meson.build index 9403d33cd6..88e3f86d26 100644 --- a/src/shared/meson.build +++ b/src/shared/meson.build @@ -307,7 +307,7 @@ shared_sources += shared_generated_gperf_headers fname = 'ethtool-link-mode.h' ethtool_link_mode_h = custom_target( fname, - input : ['ethtool-link-mode.py', '../basic/linux/ethtool.h'], + input : ['ethtool-link-mode.py', '../basic/include/linux/ethtool.h'], output : fname, command : [python, '@INPUT0@', '--header', cpp, '@INPUT1@'], capture : true) @@ -316,7 +316,7 @@ shared_sources += ethtool_link_mode_h fname = 'ethtool-link-mode.xml' ethtool_link_mode_xml = custom_target( fname, - input : ['ethtool-link-mode.py', '../basic/linux/ethtool.h'], + input : ['ethtool-link-mode.py', '../basic/include/linux/ethtool.h'], output : fname, command : [python, '@INPUT0@', '--xml', cpp, '@INPUT1@'], capture : true) diff --git a/src/udev/meson.build b/src/udev/meson.build index 9b2615173a..06fe562077 100644 --- a/src/udev/meson.build +++ b/src/udev/meson.build @@ -65,7 +65,7 @@ endif generate_keyboard_keys_list = find_program('generate-keyboard-keys-list.sh') keyboard_keys_list_txt = custom_target( 'keyboard-keys-list.txt', - input : files('../basic/linux/input.h'), + input : files('../basic/include/linux/input.h'), output : 'keyboard-keys-list.txt', command : [generate_keyboard_keys_list, cpp, '@INPUT@'], capture : true)