X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Fmacro.h;h=cca41a3f6ad7311877211d788a6d0d076285c909;hb=dfb33a9737e62ab872d3937b7690b252d2892fe8;hp=f884bf653fe41fd24ffd0b1e75f43b96ab54fdca;hpb=fa70beaabc56762fdf77e675c3e09bb638d89938;p=elogind.git diff --git a/src/shared/macro.h b/src/shared/macro.h index f884bf653..cca41a3f6 100644 --- a/src/shared/macro.h +++ b/src/shared/macro.h @@ -45,6 +45,7 @@ #define _weakref_(x) __attribute__((weakref(#x))) #define _introspect_(x) __attribute__((section("introspect." x))) #define _alignas_(x) __attribute__((aligned(__alignof(x)))) +#define _cleanup_(x) __attribute__((cleanup(x))) /* automake test harness */ #define EXIT_TEST_SKIP 77 @@ -53,7 +54,20 @@ #define STRINGIFY(x) XSTRINGIFY(x) /* Rounds up */ -#define ALIGN(l) ALIGN_TO((l), sizeof(void*)) + +#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 ALIGN8_PTR(p) ((void*) ALIGN8((unsigned long) p)) + static inline size_t ALIGN_TO(size_t l, size_t ali) { return ((l + ali - 1) & ~(ali - 1)); } @@ -201,17 +215,6 @@ static inline size_t IOVEC_INCREMENT(struct iovec *i, unsigned n, size_t k) { return k; } -#define _cleanup_free_ __attribute__((cleanup(freep))) -#define _cleanup_fclose_ __attribute__((cleanup(fclosep))) -#define _cleanup_pclose_ __attribute__((cleanup(pclosep))) -#define _cleanup_close_ __attribute__((cleanup(closep))) -#define _cleanup_closedir_ __attribute__((cleanup(closedirp))) -#define _cleanup_umask_ __attribute__((cleanup(umaskp))) -#define _cleanup_set_free_ __attribute__((cleanup(set_freep))) -#define _cleanup_set_free_free_ __attribute__((cleanup(set_free_freep))) -#define _cleanup_strv_free_ __attribute__((cleanup(strv_freep))) -#define _cleanup_journal_close_ __attribute__((cleanup(journal_closep))) - #define VA_FORMAT_ADVANCE(format, ap) \ do { \ int _argtypes[128]; \