diff --git a/LICENSES/README.md b/LICENSES/README.md index f8668be820..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/ and src/shared/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/shared/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 d4bccdc505..19ae59e4e5 100755 --- a/coccinelle/run-coccinelle.sh +++ b/coccinelle/run-coccinelle.sh @@ -5,8 +5,7 @@ set -e # Exclude following paths from the Coccinelle transformations EXCLUDED_PATHS=( "src/boot/efi/*" - "src/shared/linux/*" - "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/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/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/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 e589a94fd0..764a364a71 100644 --- a/src/basic/alloc-util.h +++ b/src/basic/alloc-util.h @@ -7,7 +7,9 @@ #include #include +#include "assert-util.h" #include "macro.h" +#include "memory-util.h" #if HAS_FEATURE_MEMORY_SANITIZER # include @@ -266,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/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/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/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/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/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/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/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/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/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/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/format-ifname.c b/src/basic/format-ifname.c index ce4933c57d..8331d20288 100644 --- a/src/basic/format-ifname.c +++ b/src/basic/format-ifname.c @@ -1,6 +1,8 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #include "format-ifname.h" +#include "log.h" +#include "stdio-util.h" #include "string-util.h" assert_cc(STRLEN("%") + DECIMAL_STR_MAX(int) <= IF_NAMESIZE); 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/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/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 3d6d1f26b5..6bbcd70c07 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/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/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..4d7431cdf2 100644 --- a/src/basic/keyring-util.c +++ b/src/basic/keyring-util.c @@ -1,6 +1,8 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #include "keyring-util.h" +#include "log.h" +#include "alloc-util.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/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" 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/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-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..84339695bf --- /dev/null +++ b/src/basic/log-context.h @@ -0,0 +1,129 @@ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ +#pragma once + +#include +#include + +#include "list.h" +#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 + * 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..3d2346f686 100644 --- a/src/basic/log.c +++ b/src/basic/log.c @@ -24,7 +24,9 @@ #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" #include "missing_syscall.h" #include "parse-util.h" @@ -76,27 +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; - -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; @@ -697,7 +678,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 +728,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); @@ -964,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."); } @@ -1099,7 +1025,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 +1126,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); @@ -1332,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) { /* @@ -1811,162 +1729,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 def54c81b1..9759b28dc0 100644 --- a/src/basic/log.h +++ b/src/basic/log.h @@ -7,10 +7,7 @@ #include #include -#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 */ struct iovec; @@ -82,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); @@ -188,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) @@ -339,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( @@ -403,58 +376,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); @@ -464,112 +385,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/macro.h b/src/basic/macro.h index 026ec13637..a022e60e17 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); \ @@ -251,59 +184,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 @@ -328,12 +208,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: * @@ -358,5 +232,3 @@ assert_cc(sizeof(dummy_t) == 0); 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/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 0a035ef087..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); @@ -120,3 +110,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/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/meson.build b/src/basic/meson.build index 8d0876fc5b..3396e395de 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', @@ -58,6 +59,7 @@ basic_sources = files( 'locale-util.c', 'lock-util.c', 'log.c', + 'log-context.c', 'login-util.c', 'keyring-util.c', 'memfd-util.c', @@ -131,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') @@ -236,7 +238,7 @@ run_target( ############################################################ filesystem_includes = files( - 'linux/magic.h', + 'include/linux/magic.h', 'missing_magic.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/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/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/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/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/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/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/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/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/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/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 3620c6942e..fd44b526a5 100644 --- a/src/core/clock-warp.c +++ b/src/core/clock-warp.c @@ -8,6 +8,8 @@ #include "clock-util.h" #include "clock-warp.h" #include "errno-util.h" +#include "log.h" +#include "time-util.h" int clock_reset_timewarp(void) { static const struct timezone tz = { 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/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/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/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/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/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/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/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 1d39d60ae8..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,45 +147,7 @@ #define XCONCATENATE(x, y) x ## y #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 assert_cc(expr) _Static_assert(expr, #expr) #define UNIQ_T(x, uniq) CONCATENATE(__unique_prefix_, CONCATENATE(x, uniq)) #define UNIQ __COUNTER__ @@ -438,82 +403,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) \ @@ -521,41 +410,11 @@ 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); \ - } +typedef struct { + int _empty[0]; +} dummy_t; -/* 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); \ - } \ - } +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) diff --git a/src/fundamental/memory-util-fundamental.h b/src/fundamental/memory-util-fundamental.h index 6c3aac34a2..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) \ @@ -106,3 +107,115 @@ 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); \ + } \ + } + +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; \ + }) 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..6da06f237b 100644 --- a/src/fuzz/fuzz.h +++ b/src/fuzz/fuzz.h @@ -4,8 +4,10 @@ #include #include +#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/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/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/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/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 b24152f17e..2ffbaa72e2 100644 --- a/src/libsystemd-network/sd-dns-resolver.c +++ b/src/libsystemd-network/sd-dns-resolver.c @@ -1,9 +1,11 @@ /* 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" +#include "stdio-util.h" #include "string-table.h" #include "string-util.h" #include "strv.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..37f9495138 100644 --- a/src/libsystemd/sd-bus/bus-objects.c +++ b/src/libsystemd/sd-bus/bus-objects.c @@ -10,6 +10,8 @@ #include "bus-signature.h" #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 8238e31c90..ed9da96638 100644 --- a/src/libsystemd/sd-bus/bus-slot.c +++ b/src/libsystemd/sd-bus/bus-slot.c @@ -6,6 +6,8 @@ #include "bus-control.h" #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/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 6429267843..2f6caee8ec 100644 --- a/src/libsystemd/sd-bus/sd-bus.c +++ b/src/libsystemd/sd-bus/sd-bus.c @@ -36,6 +36,8 @@ #include "hexdecoct.h" #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-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/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 a0e618cf1d..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" @@ -32,6 +33,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-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 f7dee86209..a048dd679a 100644 --- a/src/libsystemd/sd-journal/journal-vacuum.c +++ b/src/libsystemd/sd-journal/journal-vacuum.c @@ -11,10 +11,12 @@ #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" #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-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 618ce93978..494f3379f7 100644 --- a/src/libsystemd/sd-json/sd-json.c +++ b/src/libsystemd/sd-json/sd-json.c @@ -25,12 +25,14 @@ #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" #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/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-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/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/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/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/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/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-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-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 88620aad53..68499fc529 100644 --- a/src/network/networkctl-util.c +++ b/src/network/networkctl-util.c @@ -4,8 +4,10 @@ #include #include "ansi-color.h" +#include "log.h" #include "networkctl.h" #include "networkctl-util.h" +#include "stdio-util.h" #include "strv.h" #include "varlink-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/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/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/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/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/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..16a49ccdc1 100644 --- a/src/ptyfwd/ptyfwd-tool.c +++ b/src/ptyfwd/ptyfwd-tool.c @@ -7,8 +7,10 @@ #include "build.h" #include "event-util.h" #include "fd-util.h" +#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/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-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/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/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.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/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/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-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.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/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.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/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/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 805503f366..c27678f011 100644 --- a/src/shared/coredump-util.c +++ b/src/shared/coredump-util.c @@ -5,6 +5,8 @@ #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" #include "virt.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/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/fstab-util.h b/src/shared/fstab-util.h index 3fc1440e19..cf909c60f8 100644 --- a/src/shared/fstab-util.h +++ b/src/shared/fstab-util.h @@ -3,7 +3,9 @@ #include #include +#include +#include "assert-util.h" #include "macro.h" bool fstab_enabled_full(int enabled); 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/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/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/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/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/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/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/notify-recv.c b/src/shared/notify-recv.c index 8c5e711495..0e64bdde04 100644 --- a/src/shared/notify-recv.c +++ b/src/shared/notify-recv.c @@ -2,7 +2,9 @@ #include "async.h" #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/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/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/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/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/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/pretty-print.h b/src/shared/pretty-print.h index fbfccb0a2e..6f44955076 100644 --- a/src/shared/pretty-print.h +++ b/src/shared/pretty-print.h @@ -1,7 +1,10 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once +#include + #include "ansi-color.h" +#include "assert-util.h" #include "glyph-util.h" #include "terminal-util.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" 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/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/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 f3506a5625..5a37c56324 100644 --- a/src/shared/tests.h +++ b/src/shared/tests.h @@ -9,11 +9,13 @@ #include "argv-util.h" #include "errno-util.h" +#include "log.h" #include "macro.h" #include "process-util.h" #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) { 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/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/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-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..208134cb15 100644 --- a/src/shutdown/detach-swap.c +++ b/src/shutdown/detach-swap.c @@ -9,6 +9,8 @@ #include "detach-swap.h" #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-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/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-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/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-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" diff --git a/src/test/test-sizeof.c b/src/test/test-sizeof.c index ea0c58770e..c3f1bdee89 100644 --- a/src/test/test-sizeof.c +++ b/src/test/test-sizeof.c @@ -2,6 +2,7 @@ #include #include +#include #include #include #include @@ -11,6 +12,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/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/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) 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 d8655c08c3..2d8792df24 100644 --- a/src/udev/scsi_id/scsi_serial.c +++ b/src/udev/scsi_id/scsi_serial.c @@ -21,11 +21,13 @@ #include #include "devnum-util.h" +#include "log.h" #include "memory-util.h" #include "random-util.h" #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 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-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/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-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" 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/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/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 f306a4ffd6..d5a4b39cc8 100644 --- a/src/udev/udevadm-hwdb.c +++ b/src/udev/udevadm-hwdb.c @@ -2,7 +2,9 @@ #include +#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..7b2ff301aa 100644 --- a/src/varlinkctl/varlinkctl.c +++ b/src/varlinkctl/varlinkctl.c @@ -10,12 +10,14 @@ #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" #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" 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" 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;