aboutsummaryrefslogtreecommitdiff
path: root/include/sbi/sbi_types.h
diff options
context:
space:
mode:
authorAnup Patel <anup.patel@wdc.com>2020-01-17 16:42:41 +0530
committerAnup Patel <anup@brainfault.org>2020-01-22 12:13:30 +0530
commit0a411bf717d20a212949af443b275fab9469992f (patch)
tree696d95cf4ddebeeb168a28117d1378433387b0a7 /include/sbi/sbi_types.h
parent84cd4fc913e6475083f0a15993f2b4ad0705c717 (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.h11
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)