18 #ifndef _BOILERPLATE_COMPILER_H 19 #define _BOILERPLATE_COMPILER_H 23 #define container_of(ptr, type, member) \ 25 const __typeof__(((type *)0)->member) *__mptr = (ptr); \ 26 (type *)((char *)__mptr - offsetof(type, member)); \ 29 #define __stringify_1(x...) #x 30 #define __stringify(x...) __stringify_1(x) 33 #define __noreturn __attribute__((__noreturn__)) 37 #define __must_check __attribute__((__warn_unused_result__)) 41 #define __weak __attribute__((__weak__)) 44 #ifndef __maybe_unused 45 #define __maybe_unused __attribute__((__unused__)) 49 #define __aligned(__n) __attribute__((aligned (__n))) 53 #define __deprecated __attribute__((__deprecated__)) 57 #define __packed __attribute__((__packed__)) 61 #define __alloc_size(__args) __attribute__((__alloc_size__(__args))) 64 #define __align_to(__size, __al) (((__size) + (__al) - 1) & (~((__al) - 1))) 70 #define xenomai_count_trailing_zeros(x) \ 71 ((x) == 0 ? (int)(sizeof(x) * __CHAR_BIT__) \ 72 : sizeof(x) <= sizeof(unsigned int) ? \ 73 __builtin_ctz((unsigned int)x) \ 74 : sizeof(x) <= sizeof(unsigned long) ? \ 75 __builtin_ctzl((unsigned long)x) \ 78 #define xenomai_count_leading_zeros(x) \ 79 ((x) == 0 ? (int)(sizeof(x) * __CHAR_BIT__) \ 80 : sizeof(x) <= sizeof(unsigned int) ? \ 81 __builtin_clz((unsigned int)x) + \ 82 (int)(sizeof(unsigned int) - sizeof(x)) \ 83 : sizeof(x) <= sizeof(unsigned long) ? \ 84 __builtin_clzl((unsigned long)x) \