|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC 4/8] golang/xenlight: Implement libxl_domain_info and libxl_domain_unpause
On 23/01/17 16:43, 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>
> ---
> tools/golang/xenlight/xenlight.go | 92
> +++++++++++++++++++++++++++++++++++++++
> 1 file changed, 92 insertions(+)
>
> diff --git a/tools/golang/xenlight/xenlight.go
> b/tools/golang/xenlight/xenlight.go
> index 92410a8..dd6893c 100644
> --- a/tools/golang/xenlight/xenlight.go
> +++ b/tools/golang/xenlight/xenlight.go
> @@ -36,6 +36,7 @@ import "C"
> import (
> "fmt"
> "unsafe"
> + "time"
> )
>
> /*
> @@ -104,6 +105,12 @@ var errors = [...]string{
> * Types: Builtins
> */
>
> +type Domid uint32
> +
> +type MemKB uint64
> +
> +type Uuid C.libxl_uuid
> +
> type Context struct {
> ctx *C.libxl_ctx
> }
> @@ -165,6 +172,32 @@ type VersionInfo struct {
> BuildId string
> }
>
> +type Dominfo struct {
> + Uuid Uuid
> + Domid Domid
> + Ssidref uint32
> + SsidLabel string
> + Running bool
> + Blocked bool
> + Paused bool
> + Shutdown bool
> + Dying bool
> + NeverStop bool
Run 'go fmt' to align these.
> +
> + ShutdownReason int32 // FIXME shutdown_reason enumeration
> + OutstandingMemkb MemKB
> + CurrentMemkb MemKB
> + SharedMemkb MemKB
> + PagedMemkb MemKB
> + MaxMemkb MemKB
> + CpuTime time.Duration
> + VcpuMaxId uint32
> + VcpuOnline uint32
> + Cpupool uint32
> + DomainType int32 //FIXME libxl_domain_type enumeration
We need to have these enumerations actually created as consts, like we
do with the errors.
We should also make a type for these enums, and a String method that
calls the libxl_<type>_to_string() function to convert it to a string.
> +
> +}
> +
> /*
> * Context
> */
> @@ -343,3 +376,62 @@ 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
> +
> + ret := C.libxl_domain_info(Ctx.ctx, unsafe.Pointer(&cdi),
> C.uint32_t(Id))
> +
> + if ret != 0 {
> + err = Error(-ret)
> + return
> + }
> +
> + // We could consider having this boilerplate generated by the
> + // idl, in a function like this:
> + //
> + // di = translateCdomaininfoToGoDomaininfo(cdi)
Stale comment; you could remove this, or make it cdi.toGo().
> + di = &Dominfo{}
> + di.Uuid = Uuid(cdi.uuid)
> + di.Domid = Domid(cdi.domid)
> + di.Ssidref = uint32(cdi.ssidref)
> + di.SsidLabel = C.GoString(cdi.ssid_label)
And here we'll probably leak memory if we don't call
libxl_dominfo_dispose() before returning.
Everything else 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 |