[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v4 02/14] golang/xenlight: Add error constants and standard handling
Create error type Errorxl for throwing proper xenlight errors. Update Ctx functions to throw Errorxl errors. Signed-off-by: Ronald Rojas <ronladred@xxxxxxxxx> --- CC: xen-devel@xxxxxxxxxxxxx CC: george.dunlap@xxxxxxxxxx CC: ian.jackson@xxxxxxxxxxxxx CC: wei.liu2@xxxxxxxxxx --- --- tools/golang/xenlight/xenlight.go | 78 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 76 insertions(+), 2 deletions(-) diff --git a/tools/golang/xenlight/xenlight.go b/tools/golang/xenlight/xenlight.go index b025961..a99d9d3 100644 --- a/tools/golang/xenlight/xenlight.go +++ b/tools/golang/xenlight/xenlight.go @@ -37,8 +37,71 @@ import ( ) /* + * 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 } @@ -50,6 +113,17 @@ var Ctx Context var logger *C.xentoollog_logger_stdiostream +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 } @@ -64,7 +138,7 @@ func (Ctx *Context) Open() (err error) { 0, unsafe.Pointer(logger)) if ret != 0 { - err = fmt.Errorf("Error: %d", -ret) + err = Error(-ret) } return } @@ -74,7 +148,7 @@ func (Ctx *Context) Close() (err error) { Ctx.ctx = nil if ret != 0 { - err = fmt.Errorf("Error: %d", -ret) + err = Error(-ret) } C.xtl_logger_destroy(unsafe.Pointer(logger)) return -- 2.7.3 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |