On 02/03/17 16:07, Ronald Rojas wrote:
> Create error type Errorxl for throwing proper xenlight
> errors.
> 
> Update Ctx functions to throw Errorxl errors.
> 
> Signed-off-by: Ronald Rojas <ronlad...@gmail.com>

There are a couple of `go fmt` changes which should be in the previous
patch (including the stray semicolon and a space for a c-style comment).
 With that fixed:

Reviewed-by: George Dunlap <george.dun...@citrix.com>

> ---
> Changes since last patch:
> 
> - Whitespace fixes
> 
> CC: xen-devel@lists.xen.org
> CC: george.dun...@citrix.com
> CC: ian.jack...@eu.citrix.com
> CC: wei.l...@citrix.com
> ---
> ---
>  tools/golang/xenlight/xenlight.go | 81 
> +++++++++++++++++++++++++++++++++++++--
>  1 file changed, 77 insertions(+), 4 deletions(-)
> 
> diff --git a/tools/golang/xenlight/xenlight.go 
> b/tools/golang/xenlight/xenlight.go
> index 0a0cea2..cbd3527 100644
> --- a/tools/golang/xenlight/xenlight.go
> +++ b/tools/golang/xenlight/xenlight.go
> @@ -29,17 +29,79 @@ import "C"
>   *
>   * To get back to static linking:
>   * #cgo LDFLAGS: -lxenlight -lyajl_s -lxengnttab -lxenstore -lxenguest 
> -lxentoollog -lxenevtchn -lxenctrl -lblktapctl -lxenforeignmemory -lxencall 
> -lz -luuid -lutil
> -*/
> + */
>  
>  import (
>       "fmt"
>       "unsafe"
>  )
>  
> +/*
> + * Errors
> + */
> +
> +type Error int
> +
> +const (
> +     ErrorNonspecific                  = Error(-C.ERROR_NONSPECIFIC)
> +     ErrorVersion                      = Error(-C.ERROR_VERSION)
> +     ErrorFail                         = Error(-C.ERROR_FAIL)
> +     ErrorNi                           = Error(-C.ERROR_NI)
> +     ErrorNomem                        = Error(-C.ERROR_NOMEM)
> +     ErrorInval                        = Error(-C.ERROR_INVAL)
> +     ErrorBadfail                      = Error(-C.ERROR_BADFAIL)
> +     ErrorGuestTimedout                = Error(-C.ERROR_GUEST_TIMEDOUT)
> +     ErrorTimedout                     = Error(-C.ERROR_TIMEDOUT)
> +     ErrorNoparavirt                   = Error(-C.ERROR_NOPARAVIRT)
> +     ErrorNotReady                     = Error(-C.ERROR_NOT_READY)
> +     ErrorOseventRegFail               = Error(-C.ERROR_OSEVENT_REG_FAIL)
> +     ErrorBufferfull                   = Error(-C.ERROR_BUFFERFULL)
> +     ErrorUnknownChild                 = Error(-C.ERROR_UNKNOWN_CHILD)
> +     ErrorLockFail                     = Error(-C.ERROR_LOCK_FAIL)
> +     ErrorJsonConfigEmpty              = Error(-C.ERROR_JSON_CONFIG_EMPTY)
> +     ErrorDeviceExists                 = Error(-C.ERROR_DEVICE_EXISTS)
> +     ErrorCheckpointDevopsDoesNotMatch = 
> Error(-C.ERROR_CHECKPOINT_DEVOPS_DOES_NOT_MATCH)
> +     ErrorCheckpointDeviceNotSupported = 
> Error(-C.ERROR_CHECKPOINT_DEVICE_NOT_SUPPORTED)
> +     ErrorVnumaConfigInvalid           = Error(-C.ERROR_VNUMA_CONFIG_INVALID)
> +     ErrorDomainNotfound               = Error(-C.ERROR_DOMAIN_NOTFOUND)
> +     ErrorAborted                      = Error(-C.ERROR_ABORTED)
> +     ErrorNotfound                     = Error(-C.ERROR_NOTFOUND)
> +     ErrorDomainDestroyed              = Error(-C.ERROR_DOMAIN_DESTROYED)
> +     ErrorFeatureRemoved               = Error(-C.ERROR_FEATURE_REMOVED)
> +)
> +
> +var errors = [...]string{
> +     ErrorNonspecific:                  "Non-specific error",
> +     ErrorVersion:                      "Wrong version",
> +     ErrorFail:                         "Failed",
> +     ErrorNi:                           "Not Implemented",
> +     ErrorNomem:                        "No memory",
> +     ErrorInval:                        "Invalid argument",
> +     ErrorBadfail:                      "Bad Fail",
> +     ErrorGuestTimedout:                "Guest timed out",
> +     ErrorTimedout:                     "Timed out",
> +     ErrorNoparavirt:                   "No Paravirtualization",
> +     ErrorNotReady:                     "Not ready",
> +     ErrorOseventRegFail:               "OS event registration failed",
> +     ErrorBufferfull:                   "Buffer full",
> +     ErrorUnknownChild:                 "Unknown child",
> +     ErrorLockFail:                     "Lock failed",
> +     ErrorJsonConfigEmpty:              "JSON config empty",
> +     ErrorDeviceExists:                 "Device exists",
> +     ErrorCheckpointDevopsDoesNotMatch: "Checkpoint devops does not match",
> +     ErrorCheckpointDeviceNotSupported: "Checkpoint device not supported",
> +     ErrorVnumaConfigInvalid:           "VNUMA config invalid",
> +     ErrorDomainNotfound:               "Domain not found",
> +     ErrorAborted:                      "Aborted",
> +     ErrorNotfound:                     "Not found",
> +     ErrorDomainDestroyed:              "Domain destroyed",
> +     ErrorFeatureRemoved:               "Feature removed",
> +}
>  
>  /*
>   * Types: Builtins
>   */
> +
>  type Context struct {
>       ctx *C.libxl_ctx
>  }
> @@ -49,6 +111,17 @@ type Context struct {
>   */
>  var Ctx Context
>  
> +func (e Error) Error() string {
> +     if 0 < int(e) && int(e) < len(errors) {
> +             s := errors[e]
> +             if s != "" {
> +                     return s
> +             }
> +     }
> +     return fmt.Sprintf("libxl error: %d", -e)
> +
> +}
> +
>  func (Ctx *Context) IsOpen() bool {
>       return Ctx.ctx != nil
>  }
> @@ -58,11 +131,11 @@ func (Ctx *Context) Open() (err error) {
>               return
>       }
>  
> -     logger := C.xtl_createlogger_stdiostream(C.stderr, C.XTL_ERROR, 0);
> +     logger := C.xtl_createlogger_stdiostream(C.stderr, C.XTL_ERROR, 0)
>       ret := C.libxl_ctx_alloc(unsafe.Pointer(&Ctx.ctx), C.LIBXL_VERSION, 0, 
> unsafe.Pointer(logger))
>  
>       if ret != 0 {
> -             err = fmt.Errorf("Error: %d", -ret)
> +             err = Error(-ret)
>       }
>       return
>  }
> @@ -72,7 +145,7 @@ func (Ctx *Context) Close() (err error) {
>       Ctx.ctx = nil
>  
>       if ret != 0 {
> -             err = fmt.Errorf("Error: %d", -ret)
> +             err = Error(-ret)
>       }
>       return
>  }
> 


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

Reply via email to