[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] tools/oxenstored: Bind the DOM_EXC VIRQ in in Event.init()
commit 9804a5db435fe40c8ded8cf36c2d2b2281c56f1d Author: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> AuthorDate: Tue Nov 29 21:05:43 2022 +0000 Commit: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> CommitDate: Thu Dec 1 16:07:17 2022 +0000 tools/oxenstored: Bind the DOM_EXC VIRQ in in Event.init() Xenstored always needs to bind the DOM_EXC VIRQ. Instead of doing it shortly after the call to Event.init(), do it in the constructor directly. This removes the need for the field to be a mutable option. It will also simplify a future change to support live update. Rename the field from virq_port (which could be any VIRQ) to it's proper name. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Reviewed-by: Edwin Török <edvin.torok@xxxxxxxxxx> Acked-by: Christian Lindig <christian.lindig@xxxxxxxxxx> --- tools/ocaml/xenstored/event.ml | 9 ++++++--- tools/ocaml/xenstored/xenstored.ml | 4 +--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/tools/ocaml/xenstored/event.ml b/tools/ocaml/xenstored/event.ml index ccca90b6fc..a3be296374 100644 --- a/tools/ocaml/xenstored/event.ml +++ b/tools/ocaml/xenstored/event.ml @@ -17,12 +17,15 @@ (**************** high level binding ****************) type t = { handle: Xeneventchn.handle; - mutable virq_port: Xeneventchn.t option; + domexc: Xeneventchn.t; } -let init () = { handle = Xeneventchn.init (); virq_port = None; } +let init () = + let handle = Xeneventchn.init () in + let domexc = Xeneventchn.bind_dom_exc_virq handle in + { handle; domexc } + let fd eventchn = Xeneventchn.fd eventchn.handle -let bind_dom_exc_virq eventchn = eventchn.virq_port <- Some (Xeneventchn.bind_dom_exc_virq eventchn.handle) let bind_interdomain eventchn domid port = Xeneventchn.bind_interdomain eventchn.handle domid port let unbind eventchn port = Xeneventchn.unbind eventchn.handle port let notify eventchn port = Xeneventchn.notify eventchn.handle port diff --git a/tools/ocaml/xenstored/xenstored.ml b/tools/ocaml/xenstored/xenstored.ml index c5dc7a28d0..55071b49ec 100644 --- a/tools/ocaml/xenstored/xenstored.ml +++ b/tools/ocaml/xenstored/xenstored.ml @@ -397,7 +397,6 @@ let _ = if cf.restart && Sys.file_exists Disk.xs_daemon_database then ( let rwro = DB.from_file store domains cons Disk.xs_daemon_database in info "Live reload: database loaded"; - Event.bind_dom_exc_virq eventchn; Process.LiveUpdate.completed (); rwro ) else ( @@ -413,7 +412,6 @@ let _ = if cf.domain_init then ( Connections.add_domain cons (Domains.create0 domains); - Event.bind_dom_exc_virq eventchn ); rw_sock ) in @@ -451,7 +449,7 @@ let _ = let port = Event.pending eventchn in debug "pending port %d" (Xeneventchn.to_int port); finally (fun () -> - if Some port = eventchn.Event.virq_port then ( + if port = eventchn.Event.domexc then ( let (notify, deaddom) = Domains.cleanup domains in List.iter (Store.reset_permissions store) deaddom; List.iter (Connections.del_domain cons) deaddom; -- generated by git-patchbot for /home/xen/git/xen.git#master
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |