compiler.h: removed unused garbage
[netsniff-ng.git] / src / compiler.h
blobf708a2dd97ac0aa32a2e9f07c692e176c1aacbbe
1 /*
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.
6 */
8 #ifndef COMPILER_H
9 #define COMPILER_H
11 #ifndef __aligned_16
12 # define __aligned_16 __attribute__((aligned(16)))
13 #endif
15 #ifndef likely
16 # define likely(x) __builtin_expect(!!(x), 1)
17 #endif
19 #ifndef unlikely
20 # define unlikely(x) __builtin_expect(!!(x), 0)
21 #endif
23 #ifndef __deprecated
24 # define __deprecated /* unimplemented */
25 #endif
27 #ifndef unreachable
28 # define unreachable() do { } while (1)
29 #endif
31 #ifndef __read_mostly
32 # define __read_mostly __attribute__((__section__(".data.read_mostly")))
33 #endif
35 #ifndef noinline
36 # define noinline __attribute__((noinline))
37 #endif
39 #ifndef __always_inline
40 # define __always_inline inline
41 #endif
43 #ifndef __hidden
44 # define __hidden __attribute__((visibility("hidden")))
45 #endif
47 #ifndef __pure
48 # define __pure __attribute__ ((pure))
49 #endif
51 #ifndef max
52 # define max(a, b) \
53 ({ \
54 typeof (a) _a = (a); \
55 typeof (b) _b = (b); \
56 _a > _b ? _a : _b; \
58 #endif /* max */
60 #ifndef min
61 # define min(a, b) \
62 ({ \
63 typeof (a) _a = (a); \
64 typeof (b) _b = (b); \
65 _a < _b ? _a : _b; \
67 #endif /* min */
69 /* from the Linux kernel, GPLv2 */
70 #ifndef offsetof
71 # define offsetof(type, member) ((size_t) &((type *) 0)->member)
72 #endif
74 #ifndef container_of
75 # define container_of(ptr, type, member) \
76 ({ \
77 const typeof(((type *) 0)->member) * __mptr = (ptr); \
78 (type *) ((char *) __mptr - offsetof(type, member)); \
80 #endif
82 #endif /* COMPILER_H */