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