| #ifndef PERF_LINUX_KERNEL_H_ | |
| #define PERF_LINUX_KERNEL_H_ | |
| #ifndef offsetof | |
| #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) | |
| #endif | |
| #ifndef container_of | |
| /** | |
| * container_of - cast a member of a structure out to the containing structure | |
| * @ptr: the pointer to the member. | |
| * @type: the type of the container struct this is embedded in. | |
| * @member: the name of the member within the struct. | |
| * | |
| */ | |
| #define container_of(ptr, type, member) ({ \ | |
| const typeof(((type *)0)->member) * __mptr = (ptr); \ | |
| (type *)((char *)__mptr - offsetof(type, member)); }) | |
| #endif | |
| #ifndef max | |
| #define max(x, y) ({ \ | |
| typeof(x) _max1 = (x); \ | |
| typeof(y) _max2 = (y); \ | |
| (void) (&_max1 == &_max2); \ | |
| _max1 > _max2 ? _max1 : _max2; }) | |
| #endif | |
| #endif |