[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 2/5] golang/xenlight: Add error constants and standard handling
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 <ronladred@xxxxxxxxx> 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.dunlap@xxxxxxxxxx> > --- > Changes since last patch: > > - Whitespace fixes > > CC: xen-devel@xxxxxxxxxxxxx > CC: george.dunlap@xxxxxxxxxx > CC: ian.jackson@xxxxxxxxxxxxx > CC: wei.liu2@xxxxxxxxxx > --- > --- > 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@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |