[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 |