diff options
author | Anup Patel <anup.patel@wdc.com> | 2020-01-17 16:42:41 +0530 |
---|---|---|
committer | Anup Patel <anup@brainfault.org> | 2020-01-22 12:13:30 +0530 |
commit | 0a411bf717d20a212949af443b275fab9469992f (patch) | |
tree | 696d95cf4ddebeeb168a28117d1378433387b0a7 /include/sbi/sbi_types.h | |
parent | 84cd4fc913e6475083f0a15993f2b4ad0705c717 (diff) |
include: Add generic and simple list handling APIs
This patch adds generic and simple list handling APIs adapted
from Xvisor sources.
Signed-off-by: Anup Patel <anup.patel@wdc.com>
Reviewed-by: Atish Patra <atish.patra@wdc.com>
Diffstat (limited to 'include/sbi/sbi_types.h')
-rw-r--r-- | include/sbi/sbi_types.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/include/sbi/sbi_types.h b/include/sbi/sbi_types.h index 50b465e..b1686bf 100644 --- a/include/sbi/sbi_types.h +++ b/include/sbi/sbi_types.h @@ -65,6 +65,17 @@ typedef unsigned long physical_size_t; #define likely(x) __builtin_expect((x), 1) #define unlikely(x) __builtin_expect((x), 0) +#undef offsetof +#ifdef __compiler_offsetof +#define offsetof(TYPE, MEMBER) __compiler_offsetof(TYPE,MEMBER) +#else +#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) +#endif + +#define container_of(ptr, type, member) ({ \ + const typeof(((type *)0)->member) * __mptr = (ptr); \ + (type *)((char *)__mptr - offsetof(type, member)); }) + #define MAX(a, b) ((a) > (b) ? (a) : (b)) #define MIN(a, b) ((a) < (b) ? (a) : (b)) #define CLAMP(a, lo, hi) MIN(MAX(a, lo), hi) |