xref: /aosp_15_r20/external/bpftool/include/linux/kernel.h (revision 858ea5e570667251cdc31d3fe7b846b591105938)
1*858ea5e5SAndroid Build Coastguard Worker /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
2*858ea5e5SAndroid Build Coastguard Worker 
3*858ea5e5SAndroid Build Coastguard Worker #ifndef __LINUX_KERNEL_H
4*858ea5e5SAndroid Build Coastguard Worker #define __LINUX_KERNEL_H
5*858ea5e5SAndroid Build Coastguard Worker 
6*858ea5e5SAndroid Build Coastguard Worker #include <linux/build_bug.h>
7*858ea5e5SAndroid Build Coastguard Worker 
8*858ea5e5SAndroid Build Coastguard Worker #ifndef container_of
9*858ea5e5SAndroid Build Coastguard Worker #define container_of(ptr, type, member) ({			\
10*858ea5e5SAndroid Build Coastguard Worker 	const typeof(((type *)0)->member) * __mptr = (ptr);	\
11*858ea5e5SAndroid Build Coastguard Worker 	(type *)((char *)__mptr - offsetof(type, member)); })
12*858ea5e5SAndroid Build Coastguard Worker #endif
13*858ea5e5SAndroid Build Coastguard Worker 
14*858ea5e5SAndroid Build Coastguard Worker #ifndef max
15*858ea5e5SAndroid Build Coastguard Worker #define max(x, y) ({				\
16*858ea5e5SAndroid Build Coastguard Worker 	typeof(x) _max1 = (x);			\
17*858ea5e5SAndroid Build Coastguard Worker 	typeof(y) _max2 = (y);			\
18*858ea5e5SAndroid Build Coastguard Worker 	(void) (&_max1 == &_max2);		\
19*858ea5e5SAndroid Build Coastguard Worker 	_max1 > _max2 ? _max1 : _max2; })
20*858ea5e5SAndroid Build Coastguard Worker #endif
21*858ea5e5SAndroid Build Coastguard Worker 
22*858ea5e5SAndroid Build Coastguard Worker #ifndef roundup
23*858ea5e5SAndroid Build Coastguard Worker #define roundup(x, y) (				\
24*858ea5e5SAndroid Build Coastguard Worker {						\
25*858ea5e5SAndroid Build Coastguard Worker 	const typeof(y) __y = y;		\
26*858ea5e5SAndroid Build Coastguard Worker 	(((x) + (__y - 1)) / __y) * __y;	\
27*858ea5e5SAndroid Build Coastguard Worker }						\
28*858ea5e5SAndroid Build Coastguard Worker )
29*858ea5e5SAndroid Build Coastguard Worker #endif
30*858ea5e5SAndroid Build Coastguard Worker 
31*858ea5e5SAndroid Build Coastguard Worker #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
32*858ea5e5SAndroid Build Coastguard Worker #define __round_mask(x, y) ((__typeof__(x))((y)-1))
33*858ea5e5SAndroid Build Coastguard Worker #define round_up(x, y) ((((x)-1) | __round_mask(x, y))+1)
34*858ea5e5SAndroid Build Coastguard Worker 
35*858ea5e5SAndroid Build Coastguard Worker #endif
36