macro: simplify page/word alignment macros a bit

This commit is contained in:
Lennart Poettering 2009-08-17 19:17:10 +02:00
parent fe3a21f6a5
commit 8f928b2e57

View file

@ -59,28 +59,24 @@
#endif #endif
/* Rounds down */ /* Rounds down */
static inline void* pa_align_ptr(const void *p) { static inline void* PA_ALIGN_PTR(const void *p) {
return (void*) (((size_t) p) & ~(sizeof(void*)-1)); return (void*) (((size_t) p) & ~(sizeof(void*) - 1));
} }
#define PA_ALIGN_PTR(x) (pa_align_ptr(x))
/* Rounds up */ /* Rounds up */
static inline size_t pa_align(size_t l) { static inline size_t PA_ALIGN(size_t l) {
return (((l + sizeof(void*) - 1) / sizeof(void*)) * sizeof(void*)); return ((l + sizeof(void*) - 1) & ~(sizeof(void*) - 1));
} }
#define PA_ALIGN(x) (pa_align(x))
/* Rounds down */ /* Rounds down */
static inline void* pa_page_align_ptr(const void *p) { static inline void* PA_PAGE_ALIGN_PTR(const void *p) {
return (void*) (((size_t) p) & ~(PA_PAGE_SIZE-1)); return (void*) (((size_t) p) & ~(PA_PAGE_SIZE - 1));
} }
#define PA_PAGE_ALIGN_PTR(x) (pa_page_align_ptr(x))
/* Rounds up */ /* Rounds up */
static inline size_t pa_page_align(size_t l) { static inline size_t PA_PAGE_ALIGN(size_t l) {
return ((l + PA_PAGE_SIZE - 1) / PA_PAGE_SIZE) * PA_PAGE_SIZE; return (l + PA_PAGE_SIZE - 1) & ~(PA_PAGE_SIZE - 1);
} }
#define PA_PAGE_ALIGN(x) (pa_page_align(x))
#define PA_ELEMENTSOF(x) (sizeof(x)/sizeof((x)[0])) #define PA_ELEMENTSOF(x) (sizeof(x)/sizeof((x)[0]))