#pragma once #include #include #include #include #define MB (1024 * 1024UL) #define GB (1024 * MB) void * alloc_shared(unsigned int size); void * __zmalloc(size_t size, const char *func); #define zmalloc(size) __zmalloc(size, __func__) #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) #define min(x, y) ({ \ typeof(x) _min1 = (x); \ typeof(y) _min2 = (y); \ (void) (&_min1 == &_min2); \ _min1 < _min2 ? _min1 : _min2; }) #define max(x, y) ({ \ typeof(x) _max1 = (x); \ typeof(y) _max2 = (y); \ (void) (&_max1 == &_max2); \ _max1 > _max2 ? _max1 : _max2; }) #ifndef offsetof # define offsetof(type, member) ((size_t) &((type *) 0)->member) #endif /* * swap - swap value of @a and @b */ #define swap(a, b) \ do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0) #define MAX_ERRNO 4095 #define IS_ERR_VALUE(x) ((x) >= (unsigned long)-MAX_ERRNO) static inline long IS_ERR(unsigned long x) { return IS_ERR_VALUE(x); } void sizeunit(unsigned long size, char *buf); void kill_pid(pid_t pid); #define __stringify_1(x...) #x #define __stringify(x...) __stringify_1(x) #define unreachable() do { } while (1) .