From patchwork Fri Jan 17 15:57:30 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: George Dunlap X-Patchwork-Id: 11339503 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id EC1C413A0 for ; Fri, 17 Jan 2020 15:58:50 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id C73792064C for ; Fri, 17 Jan 2020 15:58:50 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=citrix.com header.i=@citrix.com header.b="gR7PqKvO" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C73792064C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=citrix.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1isU0S-0002WO-LF; Fri, 17 Jan 2020 15:57:56 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1isU0R-0002W7-Ax for xen-devel@lists.xenproject.org; Fri, 17 Jan 2020 15:57:55 +0000 X-Inumbo-ID: 182e0138-3942-11ea-9fd7-bc764e2007e4 Received: from esa4.hc3370-68.iphmx.com (unknown [216.71.155.144]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 182e0138-3942-11ea-9fd7-bc764e2007e4; Fri, 17 Jan 2020 15:57:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1579276662; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=41jiLhUK+rJBShbXoF53s8BPT3orNgLEoRhZmZrUAMg=; b=gR7PqKvOdaZ2PETPcICU9FtyDCN+p4zuoa1EVmoAOMJCG3HxLtMkMYuH c8WM5WGasF2YMRCNZBSw9MYu1qksvRy+jXgOJXRaftLXfkCBRuQrN7HVg DfvYxsuQBSugNHCcfi0m+Cc68XnVw7oDRwGuE8/qWIYV0kMR6wa6ft9WJ I=; Authentication-Results: esa4.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=george.dunlap@citrix.com; spf=Pass smtp.mailfrom=George.Dunlap@citrix.com; spf=None smtp.helo=postmaster@mail.citrix.com Received-SPF: None (esa4.hc3370-68.iphmx.com: no sender authenticity information available from domain of george.dunlap@citrix.com) identity=pra; client-ip=162.221.158.21; receiver=esa4.hc3370-68.iphmx.com; envelope-from="George.Dunlap@citrix.com"; x-sender="george.dunlap@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa4.hc3370-68.iphmx.com: domain of George.Dunlap@citrix.com designates 162.221.158.21 as permitted sender) identity=mailfrom; client-ip=162.221.158.21; receiver=esa4.hc3370-68.iphmx.com; envelope-from="George.Dunlap@citrix.com"; x-sender="George.Dunlap@citrix.com"; x-conformance=sidf_compatible; x-record-type="v=spf1"; x-record-text="v=spf1 ip4:209.167.231.154 ip4:178.63.86.133 ip4:195.66.111.40/30 ip4:85.115.9.32/28 ip4:199.102.83.4 ip4:192.28.146.160 ip4:192.28.146.107 ip4:216.52.6.88 ip4:216.52.6.188 ip4:162.221.158.21 ip4:162.221.156.83 ip4:168.245.78.127 ~all" Received-SPF: None (esa4.hc3370-68.iphmx.com: no sender authenticity information available from domain of postmaster@mail.citrix.com) identity=helo; client-ip=162.221.158.21; receiver=esa4.hc3370-68.iphmx.com; envelope-from="George.Dunlap@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: gr6POZZBnx/sUyvQ15FK3IQNdfDc3Eu7uCDYfE+ffs8kKDDX8boNs3YS5bYSieVCYmpDm1mlNU 9U3PhCN5cCpZqlM3TyR0/iLB3UMUT3vIN/uOnMJPjDhru31grI5SpnSS3YtYgcU6QN3JJhKTr9 ahye6xg8ggOoGEyNNzhSGQUom1H9HO5ybJYasUIjQKHNfccvqngawaqUsANQRXvKMStRRv79c7 fmRn+93r3D4KeKbOCgoW4YBcu+bHhJys36+R5kQasbt8PZhUqhGp69TGM7ewLOBik7C48kSEJB A7c= X-SBRS: 2.7 X-MesageID: 11674360 X-Ironport-Server: esa4.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.70,330,1574139600"; d="scan'208";a="11674360" From: George Dunlap To: Date: Fri, 17 Jan 2020 15:57:30 +0000 Message-ID: <20200117155734.1067550-4-george.dunlap@citrix.com> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200117155734.1067550-1-george.dunlap@citrix.com> References: <20200117155734.1067550-1-george.dunlap@citrix.com> MIME-Version: 1.0 Subject: [Xen-devel] [PATCH v3 4/8] golang/xenlight: Errors are negative X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Nick Rosbrook , George Dunlap Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" 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 Reviewed-by: Nick Rosbrook --- v2: - Convert libxlErrors to a map. CC: Nick Rosbrook --- 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.