[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 4/5] golang/xenlight: Implement libxl_domain_info and libxl_domain_unpause
On Fri, Mar 03, 2017 at 03:15:51PM +0000, George Dunlap wrote: > On 02/03/17 16:07, Ronald Rojas wrote: > > Add calls for the following host-related functionality: > > - libxl_domain_info > > - libxl_domain_unpause > > > > Include Golang version for the libxl_domain_info as > > DomainInfo. > > > > Signed-off-by: George Dunlap <george.dunlap@xxxxxxxxxx> > > Signed-off-by: Ronald Rojas <ronladred@xxxxxxxxx> > > --- > > Changes since last version > > - Created type and enumeration of DomainType and ShutdownReason > > > > - Created String() method for DomainType and ShutdownReason > > > > - Refactored creating DomainInfo from c type into seperate > > toGo() function > > > > - Applied libxl_domain_info_init/dispose() > > > > - whitespace fixes > > > > CC: xen-devel@xxxxxxxxxxxxx > > CC: george.dunlap@xxxxxxxxxx > > CC: ian.jackson@xxxxxxxxxxxxx > > CC: wei.liu2@xxxxxxxxxx > > > > --- > > --- > > tools/golang/xenlight/xenlight.go | 132 > > ++++++++++++++++++++++++++++++++++++++ > > 1 file changed, 132 insertions(+) > > > > diff --git a/tools/golang/xenlight/xenlight.go > > b/tools/golang/xenlight/xenlight.go > > index 63cc805..18dedcb 100644 > > --- a/tools/golang/xenlight/xenlight.go > > +++ b/tools/golang/xenlight/xenlight.go > > @@ -34,6 +34,7 @@ import "C" > > import ( > > "fmt" > > "unsafe" > > + "time" > > ) > > > > /* > > @@ -102,6 +103,12 @@ var errors = [...]string{ > > * Types: Builtins > > */ > > > > +type Domid uint32 > > + > > +type MemKB uint64 > > + > > +type Uuid C.libxl_uuid > > + > > type Context struct { > > ctx *C.libxl_ctx > > } > > @@ -203,6 +210,95 @@ func (cinfo *C.libxl_version_info) toGo() (info > > *VersionInfo) { > > return > > } > > > > +type ShutdownReason int32 > > + > > +const( > > + ShutdownReasonUnknown = ShutdownReason(C.LIBXL_SHUTDOWN_REASON_UNKNOWN) > > + ShutdownReasonPoweroff = > > ShutdownReason(C.LIBXL_SHUTDOWN_REASON_POWEROFF) > > + ShutdownReasonReboot = ShutdownReason(C.LIBXL_SHUTDOWN_REASON_REBOOT) > > + ShutdownReasonSuspend = ShutdownReason(C.LIBXL_SHUTDOWN_REASON_SUSPEND) > > + ShutdownReasonCrash = ShutdownReason(C.LIBXL_SHUTDOWN_REASON_CRASH) > > + ShutdownReasonWatchdog = > > ShutdownReason(C.LIBXL_SHUTDOWN_REASON_WATCHDOG) > > + ShutdownReasonSoftReset = > > ShutdownReason(C.LIBXL_SHUTDOWN_REASON_SOFT_RESET) > > Looks like this could use having `go fmt` run. > > > + > > +) > > + > > +func (sr ShutdownReason) String()(str string){ > > + cstr := C.libxl_shutdown_reason_to_string(C.libxl_shutdown_reason(sr)) > > + str = C.GoString(cstr) > > + > > + return > > +} > > + > > +type DomainType int32 > > + > > +const( > > + DomainTypeInvalid = DomainType(C.LIBXL_DOMAIN_TYPE_INVALID) > > + DomainTypeHvm = DomainType(C.LIBXL_DOMAIN_TYPE_HVM) > > + DomainTypePv = DomainType(C.LIBXL_DOMAIN_TYPE_PV) > > +) > > + > > +func (dt DomainType) String()(str string){ > > + cstr := C.libxl_domain_type_to_string(C.libxl_domain_type(dt)) > > + str = C.GoString(cstr) > > + > > + return > > +} > > + > > +type Dominfo struct { > > + Uuid Uuid > > + Domid Domid > > + Ssidref uint32 > > + SsidLabel string > > + Running bool > > + Blocked bool > > + Paused bool > > + Shutdown bool > > + Dying bool > > + NeverStop bool > > + > > + ShutdownReason int32 > > + OutstandingMemkb MemKB > > + CurrentMemkb MemKB > > + SharedMemkb MemKB > > + PagedMemkb MemKB > > + MaxMemkb MemKB > > + CpuTime time.Duration > > + VcpuMaxId uint32 > > + VcpuOnline uint32 > > + Cpupool uint32 > > + DomainType int32 > > + > > +} > > + > > +func (cdi *C.libxl_dominfo) toGo()(di *Dominfo){ > > + > > + di = &Dominfo{} > > + di.Uuid = Uuid(cdi.uuid) > > + di.Domid = Domid(cdi.domid) > > + di.Ssidref = uint32(cdi.ssidref) > > + di.SsidLabel = C.GoString(cdi.ssid_label) > > + di.Running = bool(cdi.running) > > + di.Blocked = bool(cdi.blocked) > > + di.Paused = bool(cdi.paused) > > + di.Shutdown = bool(cdi.shutdown) > > + di.Dying = bool(cdi.dying) > > + di.NeverStop= bool(cdi.never_stop) > > + di.ShutdownReason= int32(cdi.shutdown_reason) > > + di.OutstandingMemkb= MemKB(cdi.outstanding_memkb) > > + di.CurrentMemkb = MemKB(cdi.current_memkb) > > + di.SharedMemkb = MemKB(cdi.shared_memkb) > > + di.PagedMemkb = MemKB(cdi.paged_memkb) > > + di.MaxMemkb= MemKB(cdi.max_memkb) > > + di.CpuTime= time.Duration(cdi.cpu_time) > > + di.VcpuMaxId = uint32(cdi.vcpu_max_id) > > + di.VcpuOnline = uint32(cdi.vcpu_online) > > + di.Cpupool = uint32(cdi.cpupool) > > + di.DomainType = int32(cdi.domain_type) > > + > > + return > > +} > > + > > /* > > * Context > > */ > > @@ -356,3 +452,39 @@ func (Ctx *Context) GetVersionInfo() (info > > *VersionInfo, err error) { > > > > return > > } > > + > > +func (Ctx *Context) DomainInfo(Id Domid) (di *Dominfo, err error) { > > + err = Ctx.CheckOpen() > > + if err != nil { > > + return > > + } > > + > > + var cdi C.libxl_dominfo > > + C.libxl_dominfo_init(&cdi) > > As before, put the 'defer libxl_dominfo_dispose()' here. > Fixed. > > + > > + ret := C.libxl_domain_info(Ctx.ctx, unsafe.Pointer(&cdi), > > C.uint32_t(Id)) > > unsafe.Pointer() isn't needed here. Fixed. > > Other than that, looks good, thanks. > > -George > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |