mirror of
https://github.com/Stichting-MINIX-Research-Foundation/pkgsrc-ng.git
synced 2025-08-03 17:59:07 -04:00
90 lines
3.9 KiB
Plaintext
90 lines
3.9 KiB
Plaintext
$NetBSD: patch-include_xen_compat_h,v 1.1 2012/01/05 12:02:38 cegger Exp $
|
|
|
|
--- xen/include/xen/compat.h.orig 2009-08-06 12:56:43.000000000 +0000
|
|
+++ xen/include/xen/compat.h
|
|
@@ -128,44 +128,61 @@
|
|
})
|
|
|
|
|
|
+#define CHECK_NAME(name, tag) __check ## tag ## name
|
|
+#define CHECK_NAME_(k, n, tag) __check ## tag ## k ## _ ## n
|
|
+
|
|
#define CHECK_TYPE(name) \
|
|
- typedef int __checkT ## name[1 - ((xen_ ## name ## _t *)0 != \
|
|
- (compat_ ## name ## _t *)0) * 2]
|
|
+static inline int CHECK_NAME(name, T)(xen_ ## name ## _t *x, \
|
|
+ compat_ ## name ## _t *c) \
|
|
+{ \
|
|
+ return x == c; \
|
|
+}
|
|
#define CHECK_TYPE_(k, n) \
|
|
- typedef int __checkT ## k ## _ ## n[1 - ((k xen_ ## n *)0 != \
|
|
- (k compat_ ## n *)0) * 2]
|
|
+static inline int CHECK_NAME_(k, n, T)(k xen_ ## n *x, \
|
|
+ k compat_ ## n *c) \
|
|
+{ \
|
|
+ return x == c; \
|
|
+}
|
|
|
|
#define CHECK_SIZE(name) \
|
|
- typedef int __checkS ## name[1 - (sizeof(xen_ ## name ## _t) != \
|
|
- sizeof(compat_ ## name ## _t)) * 2]
|
|
+ typedef int CHECK_NAME(name, S)[1 - (sizeof(xen_ ## name ## _t) != \
|
|
+ sizeof(compat_ ## name ## _t)) * 2]
|
|
#define CHECK_SIZE_(k, n) \
|
|
- typedef int __checkS ## k ## _ ## n[1 - (sizeof(k xen_ ## n) != \
|
|
+ typedef int CHECK_NAME_(k, n, S)[1 - (sizeof(k xen_ ## n) != \
|
|
sizeof(k compat_ ## n)) * 2]
|
|
|
|
+#define CHECK_FIELD_COMMON(name, t, f) \
|
|
+static inline int name(xen_ ## t ## _t *x, compat_ ## t ## _t *c) \
|
|
+{ \
|
|
+ BUILD_BUG_ON(offsetof(xen_ ## t ## _t, f) != \
|
|
+ offsetof(compat_ ## t ## _t, f)); \
|
|
+ return &x->f == &c->f; \
|
|
+}
|
|
+#define CHECK_FIELD_COMMON_(k, name, n, f) \
|
|
+static inline int name(k xen_ ## n *x, k compat_ ## n *c) \
|
|
+{ \
|
|
+ BUILD_BUG_ON(offsetof(k xen_ ## n, f) != \
|
|
+ offsetof(k compat_ ## n, f)); \
|
|
+ return &x->f == &c->f; \
|
|
+}
|
|
+
|
|
#define CHECK_FIELD(t, f) \
|
|
- typedef int __checkF ## t ## __ ## f[1 - (&((xen_ ## t ## _t *)0)->f != \
|
|
- &((compat_ ## t ## _t *)0)->f) * 2]
|
|
+ CHECK_FIELD_COMMON(CHECK_NAME(t ## __ ## f, F), t, f)
|
|
#define CHECK_FIELD_(k, n, f) \
|
|
- typedef int __checkF ## k ## _ ## n ## __ ## f[1 - (&((k xen_ ## n *)0)->f != \
|
|
- &((k compat_ ## n *)0)->f) * 2]
|
|
+ CHECK_FIELD_COMMON_(k, CHECK_NAME_(k, n ## __ ## f, F), n, f)
|
|
|
|
#define CHECK_SUBFIELD_1(t, f1, f2) \
|
|
- typedef int __checkF1 ## t ## __ ## f1 ## __ ## f2 \
|
|
- [1 - (&((xen_ ## t ## _t *)0)->f1.f2 != \
|
|
- &((compat_ ## t ## _t *)0)->f1.f2) * 2]
|
|
+ CHECK_FIELD_COMMON(CHECK_NAME(t ## __ ## f1 ## __ ## f2, F1), t, f1.f2)
|
|
#define CHECK_SUBFIELD_1_(k, n, f1, f2) \
|
|
- typedef int __checkF1 ## k ## _ ## n ## __ ## f1 ## __ ## f2 \
|
|
- [1 - (&((k xen_ ## n *)0)->f1.f2 != \
|
|
- &((k compat_ ## n *)0)->f1.f2) * 2]
|
|
+ CHECK_FIELD_COMMON_(k, CHECK_NAME_(k, n ## __ ## f1 ## __ ## f2, F1), \
|
|
+ n, f1.f2)
|
|
|
|
#define CHECK_SUBFIELD_2(t, f1, f2, f3) \
|
|
- typedef int __checkF2 ## t ## __ ## f1 ## __ ## f2 ## __ ## f3 \
|
|
- [1 - (&((xen_ ## t ## _t *)0)->f1.f2.f3 != \
|
|
- &((compat_ ## t ## _t *)0)->f1.f2.f3) * 2]
|
|
+ CHECK_FIELD_COMMON(CHECK_NAME(t ## __ ## f1 ## __ ## f2 ## __ ## f3, F2), \
|
|
+ t, f1.f2.f3)
|
|
#define CHECK_SUBFIELD_2_(k, n, f1, f2, f3) \
|
|
- typedef int __checkF2 ## k ## _ ## n ## __ ## f1 ## __ ## f2 ## __ ## f3 \
|
|
- [1 - (&((k xen_ ## n *)0)->f1.f2.f3 != \
|
|
- &((k compat_ ## n *)0)->f1.f2.f3) * 2]
|
|
+ CHECK_FIELD_COMMON_(k, CHECK_NAME_(k, n ## __ ## f1 ## __ ## f2 ## __ ## \
|
|
+ f3, F2), n, f1.f2.f3)
|
|
|
|
int hypercall_xlat_continuation(unsigned int *id, unsigned int mask, ...);
|
|
|