[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] tools/ocaml: Add OCaml binding of virq bind
1. Add a common bind virq function 2. Reduce the stub code of `bind_dom_exc_virq` Signed-off-by: Yang Qian <yang.qian@xxxxxxxxxx> --- tools/ocaml/libs/eventchn/xeneventchn.ml | 19 ++++++++++++++++++- tools/ocaml/libs/eventchn/xeneventchn.mli | 21 +++++++++++++++++++++ tools/ocaml/libs/eventchn/xeneventchn_stubs.c | 8 ++++---- 3 files changed, 43 insertions(+), 5 deletions(-) diff --git a/tools/ocaml/libs/eventchn/xeneventchn.ml b/tools/ocaml/libs/eventchn/xeneventchn.ml index 89edb92..dd00a1f 100644 --- a/tools/ocaml/libs/eventchn/xeneventchn.ml +++ b/tools/ocaml/libs/eventchn/xeneventchn.ml @@ -21,9 +21,26 @@ external fd: handle -> Unix.file_descr = "stub_eventchn_fd" type t = int +type virq_t = + | Timer (* #define VIRQ_TIMER 0 *) + | Debug (* #define VIRQ_DEBUG 1 *) + | Console (* #define VIRQ_CONSOLE 2 *) + | Dom_exc (* #define VIRQ_DOM_EXC 3 *) + | Tbuf (* #define VIRQ_TBUF 4 *) + | Reserved_5 (* Do not use this value as it's not defined *) + | Debugger (* #define VIRQ_DEBUGGER 6 *) + | Xenoprof (* #define VIRQ_XENOPROF 7 *) + | Con_ring (* #define VIRQ_CON_RING 8 *) + | Pcpu_state (* #define VIRQ_PCPU_STATE 9 *) + | Mem_event (* #define VIRQ_MEM_EVENT 10 *) + | Xc_reserved (* #define VIRQ_XC_RESERVED 11 *) + | Enomem (* #define VIRQ_ENOMEM 12 *) + | Xenpmu (* #define VIRQ_XENPMU 13 *) + external notify: handle -> int -> unit = "stub_eventchn_notify" external bind_interdomain: handle -> int -> int -> int = "stub_eventchn_bind_interdomain" -external bind_dom_exc_virq: handle -> int = "stub_eventchn_bind_dom_exc_virq" +external bind_virq: handle -> virq_t -> int = "stub_eventchn_bind_virq" +let bind_dom_exc_virq handle = bind_virq handle Dom_exc external unbind: handle -> int -> unit = "stub_eventchn_unbind" external pending: handle -> int = "stub_eventchn_pending" external unmask: handle -> int -> unit = "stub_eventchn_unmask" diff --git a/tools/ocaml/libs/eventchn/xeneventchn.mli b/tools/ocaml/libs/eventchn/xeneventchn.mli index e180145..08c7337 100644 --- a/tools/ocaml/libs/eventchn/xeneventchn.mli +++ b/tools/ocaml/libs/eventchn/xeneventchn.mli @@ -22,6 +22,23 @@ type handle type t (** A local event channel. *) +type virq_t = + | Timer (* #define VIRQ_TIMER 0 *) + | Debug (* #define VIRQ_DEBUG 1 *) + | Console (* #define VIRQ_CONSOLE 2 *) + | Dom_exc (* #define VIRQ_DOM_EXC 3 *) + | Tbuf (* #define VIRQ_TBUF 4 *) + | Reserved_5 (* Do not use this value as it's not defined *) + | Debugger (* #define VIRQ_DEBUGGER 6 *) + | Xenoprof (* #define VIRQ_XENOPROF 7 *) + | Con_ring (* #define VIRQ_CON_RING 8 *) + | Pcpu_state (* #define VIRQ_PCPU_STATE 9 *) + | Mem_event (* #define VIRQ_MEM_EVENT 10 *) + | Xc_reserved (* #define VIRQ_XC_RESERVED 11 *) + | Enomem (* #define VIRQ_ENOMEM 12 *) + | Xenpmu (* #define VIRQ_XENPMU 13 *) + + val to_int: t -> int val of_int: int -> t @@ -49,6 +66,10 @@ val bind_dom_exc_virq : handle -> t (domain exception VIRQ). On error it will throw a Failure exception. *) +val bind_virq: handle -> virq_t -> t +(** Binds a local event channel to the specific VIRQ type. + On error it will throw a Failure exception. *) + val unbind : handle -> t -> unit (** Unbinds the given event channel. On error it will throw a Failure exception. *) diff --git a/tools/ocaml/libs/eventchn/xeneventchn_stubs.c b/tools/ocaml/libs/eventchn/xeneventchn_stubs.c index 45a385d..2b7984f 100644 --- a/tools/ocaml/libs/eventchn/xeneventchn_stubs.c +++ b/tools/ocaml/libs/eventchn/xeneventchn_stubs.c @@ -90,15 +90,15 @@ CAMLprim value stub_eventchn_bind_interdomain(value xce, value domid, CAMLreturn(port); } -CAMLprim value stub_eventchn_bind_dom_exc_virq(value xce) +CAMLprim value stub_eventchn_bind_virq(value xce, value virq_type) { - CAMLparam1(xce); + CAMLparam2(xce, virq_type); CAMLlocal1(port); xenevtchn_port_or_error_t rc; - rc = xenevtchn_bind_virq(_H(xce), VIRQ_DOM_EXC); + rc = xenevtchn_bind_virq(_H(xce), Int_val(virq_type)); if (rc == -1) - caml_failwith("evtchn bind_dom_exc_virq failed"); + caml_failwith("evtchn bind_virq failed"); port = Val_int(rc); CAMLreturn(port); -- 2.9.5 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |