[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] tools/ocaml: Factor out compatiblity handling
commit 8d336fcb6ea6b486ceccef2e36d003db032131fe Author: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> AuthorDate: Mon Jan 30 22:14:20 2023 +0000 Commit: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> CommitDate: Fri Aug 30 18:08:48 2024 +0100 tools/ocaml: Factor out compatiblity handling ... rather than having each library implement its own subset. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Acked-by: Christian Lindig <christian.lindig@xxxxxxxxx> --- tools/ocaml/libs/xc/Makefile | 2 +- tools/ocaml/libs/xc/xenctrl_stubs.c | 13 +++---------- tools/ocaml/libs/xen-caml-compat.h | 23 +++++++++++++++++++++++ 3 files changed, 27 insertions(+), 11 deletions(-) diff --git a/tools/ocaml/libs/xc/Makefile b/tools/ocaml/libs/xc/Makefile index 1d9fecb06e..cdf4d01dac 100644 --- a/tools/ocaml/libs/xc/Makefile +++ b/tools/ocaml/libs/xc/Makefile @@ -2,7 +2,7 @@ OCAML_TOPLEVEL=$(CURDIR)/../.. XEN_ROOT=$(OCAML_TOPLEVEL)/../.. include $(OCAML_TOPLEVEL)/common.make -CFLAGS += -I../mmap $(CFLAGS_libxenctrl) $(CFLAGS_libxenguest) +CFLAGS += -I../ -I../mmap $(CFLAGS_libxenctrl) $(CFLAGS_libxenguest) CFLAGS += $(APPEND_CFLAGS) OCAMLINCLUDE += -I ../mmap -I ../eventchn diff --git a/tools/ocaml/libs/xc/xenctrl_stubs.c b/tools/ocaml/libs/xc/xenctrl_stubs.c index a529080129..c78191f95a 100644 --- a/tools/ocaml/libs/xc/xenctrl_stubs.c +++ b/tools/ocaml/libs/xc/xenctrl_stubs.c @@ -25,6 +25,8 @@ #include <caml/fail.h> #include <caml/callback.h> +#include "xen-caml-compat.h" + #include <sys/mman.h> #include <stdint.h> #include <string.h> @@ -37,14 +39,6 @@ #include "mmap_stubs.h" -#ifndef Val_none -#define Val_none (Val_int(0)) -#endif - -#ifndef Tag_some -#define Tag_some 0 -#endif - static inline xc_interface *xch_of_val(value v) { xc_interface *xch = *(xc_interface **)Data_custom_val(v); @@ -744,8 +738,7 @@ CAMLprim value stub_xc_evtchn_status(value xch_val, value domid, value port) Store_field(result_status, 0, Val_int(status.vcpu)); Store_field(result_status, 1, stat); - result = caml_alloc_small(1, Tag_some); - Store_field(result, 0, result_status); + result = caml_alloc_some(result_status); CAMLreturn(result); } diff --git a/tools/ocaml/libs/xen-caml-compat.h b/tools/ocaml/libs/xen-caml-compat.h new file mode 100644 index 0000000000..14aede2128 --- /dev/null +++ b/tools/ocaml/libs/xen-caml-compat.h @@ -0,0 +1,23 @@ +/* SPDX-License-Identifier: LGPL-2.1-only WITH OCaml-LGPL-linking-exception */ +#ifndef XEN_CAML_COMPAT_H +#define XEN_CAML_COMPAT_H + +#ifndef Val_none /* Option handling. Compat for Ocaml < 4.12 */ + +#define Val_none Val_int(0) +#define Tag_some 0 +#define Some_val(v) Field(v, 0) + +static inline value caml_alloc_some(value v) +{ + CAMLparam1(v); + + value some = caml_alloc_small(1, Tag_some); + Field(some, 0) = v; + + CAMLreturn(some); +} + +#endif /* !Val_none */ + +#endif /* XEN_CAML_COMPAT_H */ -- generated by git-patchbot for /home/xen/git/xen.git#master
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |