[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH RFC 20/59] xenworker: Use libxl_domain_unpause rather than forking xl
From: George Dunlap <george.dunlap@xxxxxxxxxx> Unpause is a time-sensitive operation; use libxl to unpause directly rather than forking and execing xl for each VM. Signed-off-by: George Dunlap <george.dunlap@xxxxxxxxxx> --- libxl.go | 14 ++++++++++++++ xenworker.go | 12 ++---------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/libxl.go b/libxl.go index 39e47ab..415de7f 100644 --- a/libxl.go +++ b/libxl.go @@ -114,3 +114,17 @@ func (Ctx *Context) DomainInfo(Id Domid) (di *Dominfo, err error) { di.Domain_type = int32(cdi.domain_type) return } + +func (Ctx *Context) DomainUnpause(Id Domid) (err error) { + if Ctx.ctx == nil { + err = fmt.Errorf("Context not opened") + return + } + + ret := C.libxl_domain_unpause(Ctx.ctx, C.uint32_t(Id)) + + if ret != 0 { + err = fmt.Errorf("libxl_domain_unpause failed: %d", ret) + } + return +} diff --git a/xenworker.go b/xenworker.go index 31af35f..4077e77 100644 --- a/xenworker.go +++ b/xenworker.go @@ -232,16 +232,8 @@ func (w *XenWorker) Shutdown() { // FIXME: Return an error func (w *XenWorker) Process(report chan WorkerReport, done chan bool) { - mock := false - - // xl unpause [vmname] - args := []string{"xl", "unpause", w.vmname} - if mock { - args = append([]string{"echo"}, args...) - } - e := exec.Command(args[0], args[1:]...) - - err := e.Run() + // // xl unpause [vmname] + err := xg.Ctx.DomainUnpause(Domid(w.domid)) if err != nil { fmt.Printf("Error unpausing domain: %v\n", err) return -- 2.7.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |