mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
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@citrix.com>
Reviewed-by: Edwin Török <edvin.torok@citrix.com>
Acked-by: Christian Lindig <christian.lindig@citrix.com>
(cherry picked from commit 9804a5db43)
This commit is contained in:
1 parent
bb3dcf7bc8
commit
cd69a4cf61
2 files changed
+7
-6
No files matched your search
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||