X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcommon%2Falign.h;h=01004c67b3bbb4e67b76caf645a8186c11a55f87;hb=HEAD;hp=a9c88de8ed9e5d9cf47bdbb9b5e4cdb7ed588690;hpb=328342cd737582216dc7b8b7d558b2a1bf8ea5e8;p=babeltrace.git diff --git a/src/common/align.h b/src/common/align.h index a9c88de8..bf8acd6e 100644 --- a/src/common/align.h +++ b/src/common/align.h @@ -4,56 +4,19 @@ * Copyright 2010 Mathieu Desnoyers */ -#ifndef _BABELTRACE_ALIGN_H -#define _BABELTRACE_ALIGN_H +#ifndef BABELTRACE_COMMON_ALIGN_H +#define BABELTRACE_COMMON_ALIGN_H #include "compat/compiler.h" #include "compat/limits.h" -#define BT_ALIGN(x, a) __BT_ALIGN_MASK(x, (typeof(x))(a) - 1) +#define BT_ALIGN(x, a) __BT_ALIGN_MASK(x, (__typeof__(x))(a) - 1) #define __BT_ALIGN_MASK(x, mask) (((x) + (mask)) & ~(mask)) -#define BT_PTR_ALIGN(p, a) ((typeof(p)) BT_ALIGN((unsigned long) (p), a)) -#define BT_ALIGN_FLOOR(x, a) __BT_ALIGN_FLOOR_MASK(x, (typeof(x)) (a) - 1) +#define BT_PTR_ALIGN(p, a) ((__typeof__(p)) BT_ALIGN((unsigned long) (p), a)) +#define BT_ALIGN_FLOOR(x, a) __BT_ALIGN_FLOOR_MASK(x, (__typeof__(x)) (a) - 1) #define __BT_ALIGN_FLOOR_MASK(x, mask) ((x) & ~(mask)) #define BT_PTR_ALIGN_FLOOR(p, a) \ - ((typeof(p)) BT_ALIGN_FLOOR((unsigned long) (p), a)) -#define BT_IS_ALIGNED(x, a) (((x) & ((typeof(x)) (a) - 1)) == 0) + ((__typeof__(p)) BT_ALIGN_FLOOR((unsigned long) (p), a)) +#define BT_IS_ALIGNED(x, a) (((x) & ((__typeof__(x)) (a) - 1)) == 0) -/* - * Align pointer on natural object alignment. - */ -#define bt_object_align(obj) BT_PTR_ALIGN(obj, __alignof__(*(obj))) -#define bt_object_align_floor(obj) BT_PTR_ALIGN_FLOOR(obj, __alignof__(*(obj))) - -/** - * bt_offset_align - Calculate the offset needed to align an object on its - * natural alignment towards higher addresses. - * @align_drift: object offset from an "alignment"-aligned address. - * @alignment: natural object alignment. Must be non-zero, power of 2. - * - * Returns the offset that must be added to align towards higher - * addresses. - */ -#define offset_align(align_drift, alignment) \ - ({ \ - MAYBE_BUILD_BUG_ON((alignment) == 0 \ - || ((alignment) & ((alignment) - 1))); \ - (((alignment) - (align_drift)) & ((alignment) - 1)); \ - }) - -/** - * bt_offset_align_floor - Calculate the offset needed to align an object - * on its natural alignment towards lower addresses. - * @align_drift: object offset from an "alignment"-aligned address. - * @alignment: natural object alignment. Must be non-zero, power of 2. - * - * Returns the offset that must be substracted to align towards lower addresses. - */ -#define bt_offset_align_floor(align_drift, alignment) \ - ({ \ - MAYBE_BUILD_BUG_ON((alignment) == 0 \ - || ((alignment) & ((alignment) - 1))); \ - (((align_drift) - (alignment)) & ((alignment) - 1)); \ - }) - -#endif /* _BABELTRACE_ALIGN_H */ +#endif /* BABELTRACE_COMMON_ALIGN_H */