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