2 * netsniff-ng - the packet sniffing beast
3 * By Daniel Borkmann <daniel@netsniff-ng.org>
4 * Copyright 2009, 2010 Daniel Borkmann.
5 * Subject to the GPL, version 2.
12 # define __aligned_16 __attribute__((aligned(16)))
16 # define likely(x) __builtin_expect(!!(x), 1)
20 # define unlikely(x) __builtin_expect(!!(x), 0)
24 # define __deprecated /* unimplemented */
28 # define unreachable() do { } while (1)
32 # define __read_mostly __attribute__((__section__(".data.read_mostly")))
36 # define noinline __attribute__((noinline))
39 #ifndef __always_inline
40 # define __always_inline inline
44 # define __hidden __attribute__((visibility("hidden")))
48 # define __pure __attribute__ ((pure))
54 typeof (a) _a = (a); \
55 typeof (b) _b = (b); \
63 typeof (a) _a = (a); \
64 typeof (b) _b = (b); \
69 /* from the Linux kernel, GPLv2 */
71 # define offsetof(type, member) ((size_t) &((type *) 0)->member)
75 # define container_of(ptr, type, member) \
77 const typeof(((type *) 0)->member) * __mptr = (ptr); \
78 (type *) ((char *) __mptr - offsetof(type, member)); \
82 #endif /* COMPILER_H */