mirror of
https://github.com/xen-project/xen.git
synced 2026-10-30 03:00:05 +01:00
tools/ocaml/evtchn: Add binding for xenevtchn_fdopen()
For live update, the new oxenstored needs to reconstruct an evtchn object around an existing file descriptor. Signed-off-by: Edwin Török <edvin.torok@citrix.com> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> Acked-by: Christian Lindig <christian.lindig@citrix.com>
This commit is contained in:
1 parent
22d5affdf0
commit
7ba68a6c55
3 files changed
+24
No files matched your search
@@ -17,6 +17,7 @@
|
||||
type handle
|
||||
|
||||
external init: unit -> handle = "stub_eventchn_init"
|
||||
external fdopen: Unix.file_descr -> handle = "stub_eventchn_fdopen"
|
||||
external fd: handle -> Unix.file_descr = "stub_eventchn_fd"
|
||||
|
||||
type t = int
|
||||
|
||||
@@ -47,6 +47,10 @@ val init: unit -> handle
|
||||
(** Return an initialised event channel interface. On error it
|
||||
will throw a Failure exception. *)
|
||||
|
||||
val fdopen: Unix.file_descr -> handle
|
||||
(** Return an initialised event channel interface, from an already open evtchn
|
||||
file descriptor. On error it will throw a Failure exception. *)
|
||||
|
||||
val fd: handle -> Unix.file_descr
|
||||
(** Return a file descriptor suitable for Unix.select. When
|
||||
the descriptor becomes readable, it is safe to call 'pending'.
|
||||
|
||||
@@ -69,6 +69,25 @@ CAMLprim value stub_eventchn_init(void)
|
||||
CAMLreturn(result);
|
||||
}
|
||||
|
||||
CAMLprim value stub_eventchn_fdopen(value fdval)
|
||||
{
|
||||
CAMLparam1(fdval);
|
||||
CAMLlocal1(result);
|
||||
xenevtchn_handle *xce;
|
||||
|
||||
caml_enter_blocking_section();
|
||||
xce = xenevtchn_fdopen(NULL, Int_val(fdval), 0);
|
||||
caml_leave_blocking_section();
|
||||
|
||||
if (xce == NULL)
|
||||
caml_failwith("evtchn fdopen failed");
|
||||
|
||||
result = caml_alloc_custom(&xenevtchn_ops, sizeof(xce), 0, 1);
|
||||
_H(result) = xce;
|
||||
|
||||
CAMLreturn(result);
|
||||
}
|
||||
|
||||
CAMLprim value stub_eventchn_fd(value xce)
|
||||
{
|
||||
CAMLparam1(xce);
|
||||
|
||||