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 likely(x) __builtin_expect(!!(x), 1) 34 #define unlikely(x) __builtin_expect(!!(x), 0) 38 #define __noreturn __attribute__((__noreturn__)) 42 #define __must_check __attribute__((__warn_unused_result__)) 46 #define __weak __attribute__((__weak__)) 49 #ifndef __maybe_unused 50 #define __maybe_unused __attribute__((__unused__)) 54 #define __aligned(__n) __attribute__((aligned (__n))) 58 #define __deprecated __attribute__((__deprecated__)) 65 void __invalid_operand_size(
void);
71 __ret = sizeof(__v) * 8; \ 73 switch (sizeof(__v)) { \ 75 __ret = __builtin_ctz((unsigned int)__v); \ 77 case sizeof(long long): \ 78 __ret = __builtin_ctzll(__v); \ 81 __invalid_operand_size(); \ 90 __ret = sizeof(__v) * 8; \ 92 switch (sizeof(__v)) { \ 94 __ret = __builtin_clz((unsigned int)__v); \ 96 case sizeof(long long): \ 97 __ret = __builtin_clzll(__v); \ 100 __invalid_operand_size(); \