|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] tools/oxenstored: port XS_INTRODUCE evtchn rebind function from cxenstored
> + if (Domain.get_mfn edom) = mfn &&
> (Connections.find_domain cons domid) != con then begin
This should use <> instead of != because != is pointer inequality in OCaml. The
parentheses are not strictly necessary because function application has
precedence. So:
if Domain.get_mfn edom = mfn && Connections.find_domain cons domid <>
con then begin
— Christian
> On 19 Aug 2019, at 19:45, Igor Druzhinin <igor.druzhinin@xxxxxxxxxx> wrote:
>
> C version of xenstored had this ability since 61aaed0d5 ("Allow
> XS_INTRODUCE to be used for rebinding the xenstore evtchn.") from 2007.
> Copy it as is to Ocaml version.
>
> Signed-off-by: Igor Druzhinin <igor.druzhinin@xxxxxxxxxx>
> ---
> tools/ocaml/xenstored/domain.ml | 6 +++++-
> tools/ocaml/xenstored/process.ml | 8 +++++++-
> 2 files changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/tools/ocaml/xenstored/domain.ml b/tools/ocaml/xenstored/domain.ml
> index b0a01b0..aeb185f 100644
> --- a/tools/ocaml/xenstored/domain.ml
> +++ b/tools/ocaml/xenstored/domain.ml
> @@ -23,9 +23,9 @@ type t =
> {
> id: Xenctrl.domid;
> mfn: nativeint;
> - remote_port: int;
> interface: Xenmmap.mmap_interface;
> eventchn: Event.t;
> + mutable remote_port: int;
> mutable port: Xeneventchn.t option;
> mutable bad_client: bool;
> mutable io_credit: int; (* the rounds of ring process left to do,
> default is 0,
> @@ -71,6 +71,10 @@ let notify dom = match dom.port with
> Event.notify dom.eventchn port
>
> let bind_interdomain dom =
> + begin match dom.port with
> + | None -> ()
> + | Some port -> Event.unbind dom.eventchn port
> + end;
> dom.port <- Some (Event.bind_interdomain dom.eventchn dom.id
> dom.remote_port);
> debug "bound domain %d remote port %d to local port %s" dom.id
> dom.remote_port (string_of_port dom.port)
>
> diff --git a/tools/ocaml/xenstored/process.ml
> b/tools/ocaml/xenstored/process.ml
> index 8a7e538..ff5c948 100644
> --- a/tools/ocaml/xenstored/process.ml
> +++ b/tools/ocaml/xenstored/process.ml
> @@ -408,7 +408,13 @@ let do_introduce con _t domains cons data =
> in
> let dom =
> if Domains.exist domains domid then
> - Domains.find domains domid
> + let edom = Domains.find domains domid in
> + if (Domain.get_mfn edom) = mfn &&
> (Connections.find_domain cons domid) != con then begin
> + (* Use XS_INTRODUCE for recreating the xenbus
> event-channel. *)
> + edom.remote_port <- port;
> + Domain.bind_interdomain edom;
> + end;
> + edom
> else try
> let ndom = Domains.create domains domid mfn port in
> Connections.add_domain cons ndom;
> --
> 2.7.4
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |