xref: /third_party/libbpf/include/linux/kernel.h (revision 7c2aad20)
1/* SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) */
2
3#ifndef __LINUX_KERNEL_H
4#define __LINUX_KERNEL_H
5
6#ifndef offsetof
7#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
8#endif
9
10#ifndef container_of
11#define container_of(ptr, type, member) ({			\
12	const typeof(((type *)0)->member) * __mptr = (ptr);	\
13	(type *)((char *)__mptr - offsetof(type, member)); })
14#endif
15
16#ifndef max
17#define max(x, y) ({				\
18	typeof(x) _max1 = (x);			\
19	typeof(y) _max2 = (y);			\
20	(void) (&_max1 == &_max2);		\
21	_max1 > _max2 ? _max1 : _max2; })
22#endif
23
24#ifndef min
25#define min(x, y) ({				\
26	typeof(x) _min1 = (x);			\
27	typeof(y) _min2 = (y);			\
28	(void) (&_min1 == &_min2);		\
29	_min1 < _min2 ? _min1 : _min2; })
30#endif
31
32#ifndef roundup
33#define roundup(x, y) (				\
34{						\
35	const typeof(y) __y = y;		\
36	(((x) + (__y - 1)) / __y) * __y;	\
37}						\
38)
39#endif
40
41#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
42#define __KERNEL_DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d))
43
44#endif
45