All of lore.kernel.org
 help / color / mirror / Atom feed
From: George Dunlap <george.dunlap@citrix.com>
To: <xen-devel@lists.xenproject.org>
Cc: Nick Rosbrook <rosbrookn@ainfosec.com>,
	George Dunlap <george.dunlap@citrix.com>
Subject: [Xen-devel] [PATCH v3 4/8] golang/xenlight: Errors are negative
Date: Fri, 17 Jan 2020 15:57:30 +0000	[thread overview]
Message-ID: <20200117155734.1067550-4-george.dunlap@citrix.com> (raw)
In-Reply-To: <20200117155734.1067550-1-george.dunlap@citrix.com>

Commit 871e51d2d4 changed the sign on the xenlight error types (making
the values negative, same as the C-generated constants), but failed to
flip the sign in the Error() string function.  The result is that
ErrorNonspecific.String() prints "libxl error: 1" rather than the
human-readable error message.

Get rid of the whole issue by making libxlErrors a map, and mapping
actual error values to string, falling back to printing the actual
value of the Error type if it's not present.

Signed-off-by: George Dunlap <george.dunlap@citrix.com>
---
v2:
- Convert libxlErrors to a map.

CC: Nick Rosbrook <rosbrookn@ainfosec.com>
---
 tools/golang/xenlight/xenlight.go | 62 +++++++++++++++----------------
 1 file changed, 30 insertions(+), 32 deletions(-)

diff --git a/tools/golang/xenlight/xenlight.go b/tools/golang/xenlight/xenlight.go
index 1299981713..aa1e63a61a 100644
--- a/tools/golang/xenlight/xenlight.go
+++ b/tools/golang/xenlight/xenlight.go
@@ -36,42 +36,40 @@ import (
 	"unsafe"
 )
 
-var libxlErrors = [...]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",
+var libxlErrors = map[Error]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",
 }
 
 func (e Error) Error() string {
-	if 0 < int(e) && int(e) < len(libxlErrors) {
-		s := libxlErrors[e]
-		if s != "" {
-			return s
-		}
+	if s, ok := libxlErrors[e]; ok {
+		return s
 	}
-	return fmt.Sprintf("libxl error: %d", -e)
+
+	return fmt.Sprintf("libxl error: %d", e)
 }
 
 // Context represents a libxl_ctx.
-- 
2.24.1


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

  parent reply	other threads:[~2020-01-17 15:58 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-17 15:57 [Xen-devel] [PATCH v3 1/8] golang/xenlight: Don't try to marshall zero-length arrays in fromC George Dunlap
2020-01-17 15:57 ` [Xen-devel] [PATCH v3 2/8] go/xenlight: Fix CpuidPoliclyList conversion George Dunlap
2020-01-20 23:30   ` Nick Rosbrook
2020-01-17 15:57 ` [Xen-devel] [PATCH v3 3/8] go/xenlight: More informative error messages George Dunlap
2020-01-20 23:32   ` Nick Rosbrook
2020-01-17 15:57 ` George Dunlap [this message]
2020-01-20 23:40   ` [Xen-devel] [PATCH v3 4/8] golang/xenlight: Errors are negative Nick Rosbrook
2020-01-17 15:57 ` [Xen-devel] [PATCH v3 5/8] golang/xenlight: Default loglevel to DEBUG until we get everything working George Dunlap
2020-01-20 23:41   ` Nick Rosbrook
2020-01-21  9:55     ` George Dunlap
2020-01-24 19:51       ` Nick Rosbrook
2020-01-17 15:57 ` [Xen-devel] [PATCH v3 6/8] golang/xenlight: Don't leak memory on context open failure George Dunlap
2020-01-20 23:43   ` Nick Rosbrook
2020-01-17 15:57 ` [Xen-devel] [PATCH v3 7/8] golang/xenlight: Notify xenlight of SIGCHLD George Dunlap
2020-01-17 16:52   ` Ian Jackson
2020-01-17 17:33     ` George Dunlap
2020-01-17 18:12       ` [Xen-devel] [PATCH] libxl: event: Document lifetime API for libxl_childproc_setmode Ian Jackson
2020-01-20 12:06         ` Wei Liu
2020-01-17 18:13   ` [Xen-devel] [PATCH v3 7/8] golang/xenlight: Notify xenlight of SIGCHLD Nick Rosbrook
2020-01-17 18:28     ` George Dunlap
2020-01-17 15:57 ` [Xen-devel] [PATCH v3 8/8] RFC: Sketch constructors, DomainCreateNew George Dunlap
2020-01-17 18:38   ` George Dunlap
2020-01-22 10:32   ` George Dunlap
2020-01-24 19:32   ` Nick Rosbrook
2020-01-27 18:08     ` George Dunlap
2020-01-28 20:41       ` Nick Rosbrook
2020-01-29 14:17         ` Nick Rosbrook
2020-01-29 14:46         ` George Dunlap
2020-02-04 19:26           ` Nick Rosbrook
2020-01-17 16:04 ` [Xen-devel] [PATCH v3 1/8] golang/xenlight: Don't try to marshall zero-length arrays in fromC George Dunlap
2020-01-20 23:39 ` Nick Rosbrook
2020-01-21 17:35   ` George Dunlap

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200117155734.1067550-4-george.dunlap@citrix.com \
    --to=george.dunlap@citrix.com \
    --cc=rosbrookn@ainfosec.com \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.