diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2022-05-27 03:51:47 +0200 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2022-05-31 20:40:20 +0200 |
commit | 4c8d7caf1a6fbc9abac627ddf974ed219258f9a8 (patch) | |
tree | 397dbb52cb9a6a068379a81531022721eda35853 /src | |
parent | tree-wide: use ALIGN_PTR() (diff) | |
download | systemd-4c8d7caf1a6fbc9abac627ddf974ed219258f9a8.tar.xz systemd-4c8d7caf1a6fbc9abac627ddf974ed219258f9a8.zip |
macro: make ALIGN4() and ALIGN8() also return SIZE_MAX on overflow
This also drops unused ALIGN4_PTR(), ALIGN8_PTR(), and ALIGN_TO_PTR().
Diffstat (limited to '')
-rw-r--r-- | src/basic/macro.h | 19 | ||||
-rw-r--r-- | src/fundamental/macro-fundamental.h | 8 |
2 files changed, 8 insertions, 19 deletions
diff --git a/src/basic/macro.h b/src/basic/macro.h index 9727279155..e3ee7bfee9 100644 --- a/src/basic/macro.h +++ b/src/basic/macro.h @@ -110,25 +110,6 @@ #error "neither int nor long are four bytes long?!?" #endif -/* Rounds up */ - -#define ALIGN4(l) (((l) + 3) & ~3) -#define ALIGN8(l) (((l) + 7) & ~7) - -#if __SIZEOF_POINTER__ == 8 -#define ALIGN(l) ALIGN8(l) -#elif __SIZEOF_POINTER__ == 4 -#define ALIGN(l) ALIGN4(l) -#else -#error "Wut? Pointers are neither 4 nor 8 bytes long?" -#endif - -#define ALIGN_PTR(p) ((void*) ALIGN((unsigned long) (p))) -#define ALIGN4_PTR(p) ((void*) ALIGN4((unsigned long) (p))) -#define ALIGN8_PTR(p) ((void*) ALIGN8((unsigned long) (p))) - -#define ALIGN_TO_PTR(p, ali) ((void*) ALIGN_TO((unsigned long) (p), (ali))) - /* align to next higher power-of-2 (except for: 0 => 0, overflow => 0) */ static inline unsigned long ALIGN_POWER2(unsigned long u) { diff --git a/src/fundamental/macro-fundamental.h b/src/fundamental/macro-fundamental.h index 59d63e8e5d..3e4d4f0111 100644 --- a/src/fundamental/macro-fundamental.h +++ b/src/fundamental/macro-fundamental.h @@ -321,6 +321,14 @@ static inline size_t ALIGN_TO(size_t l, size_t ali) { return ((l + ali - 1) & ~(ali - 1)); } +#define ALIGN4(l) ALIGN_TO(l, 4) +#define ALIGN8(l) ALIGN_TO(l, 8) +#ifndef SD_BOOT +/* libefi also provides ALIGN, and we do not use them in sd-boot explicitly. */ +#define ALIGN(l) ALIGN_TO(l, sizeof(void*)) +#define ALIGN_PTR(p) ((void*) ALIGN((uintptr_t) (p))) +#endif + /* Same as ALIGN_TO but callable in constant contexts. */ #define CONST_ALIGN_TO(l, ali) \ __builtin_choose_expr( \ |