From nobody Mon May 6 16:59:50 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1621888688; cv=none; d=zohomail.com; s=zohoarc; b=fzaOwjCaMEmn9f1YOZx3ZrnFaolhJqRk+iTGAnpExn+bvjAD05sapHZU0B5nwSbY7/6o2SmhxxUmKBaD4MuSKWqBQGOc7ugyKd5B1+yKhok/1VZkXUQzx7aTmquUGPmpcjwiMldoP/j3aAgbAIFBjc9bHDsb09+BjVji5bDuUzg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621888688; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=CIwXzDWTaek3ruD8eh2yS/rqRAAsDRXtMIQbC1kOPa4=; b=aIpEJWXYirt4RjzrKwpSGY/dgXFc+3UIn13VC9B5Q1wYm/W37g90ZxkaKG2VApwR5WugpGhXjl02kThawEqH+6wOW906qPkw2k2w5tQS+zHQ1EDEc1JPbL+UNdYei2Dr2ZabDFcdBS7CtDE6JSiOoodTbKdOYlZUpbinm2BQtUw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1621888688189354.8268299660376; Mon, 24 May 2021 13:38:08 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.131878.246271 (Exim 4.92) (envelope-from ) id 1llHKc-0001ve-UM; Mon, 24 May 2021 20:37:46 +0000 Received: by outflank-mailman (output) from mailman id 131878.246271; Mon, 24 May 2021 20:37:46 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1llHKc-0001vX-RE; Mon, 24 May 2021 20:37:46 +0000 Received: by outflank-mailman (input) for mailman id 131878; Mon, 24 May 2021 20:37:45 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1llHKb-0001ey-RT for xen-devel@lists.xenproject.org; Mon, 24 May 2021 20:37:45 +0000 Received: from mail-qt1-x82f.google.com (unknown [2607:f8b0:4864:20::82f]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id ff609dc3-16ff-4f17-a461-4436cc8d12bc; Mon, 24 May 2021 20:37:40 +0000 (UTC) Received: by mail-qt1-x82f.google.com with SMTP id m13so21561299qtk.13 for ; Mon, 24 May 2021 13:37:40 -0700 (PDT) Received: from localhost.localdomain (c-73-89-138-5.hsd1.vt.comcast.net. [73.89.138.5]) by smtp.gmail.com with ESMTPSA id t25sm5142847qkt.62.2021.05.24.13.37.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 May 2021 13:37:40 -0700 (PDT) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: ff609dc3-16ff-4f17-a461-4436cc8d12bc DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=CIwXzDWTaek3ruD8eh2yS/rqRAAsDRXtMIQbC1kOPa4=; b=uv44pKs+RQk5sBayWXiXgIjbhPRtNWOqguwJDtAFR1bs9T4nPpWlzNvZPj2xjT7UN5 /A8RxqOKZ0sY3PK2K8DkaQJhz6bnbbr8/n2/Yd1Oe25+mGCQYOQvlvYJaQVblmKK6AxE T48iEUUddTzwnEpMAz8IN7H5ocOML1wG2QC1dQHcuuv0g35qlQ7TdmHXh54+aKP/GEMw SNolx0pyM55oubpZoQXCL82g00/iol0Bjbu5I3O4QVyBgSJHWBTGmi8GHUobnai/1pOP QQnDgaP5LdBfcNWCnF6/hgrp2PuAZHrWQuqvujovTFyLhzuJc/XxBsEAe4X9iWGbc9pf nCmg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=CIwXzDWTaek3ruD8eh2yS/rqRAAsDRXtMIQbC1kOPa4=; b=BVASBTUnUIKb31fjocPNh2f5Bp4TGgZBEfpAGi8pAEOc58Az6a68GHg5dVgZU9fep8 DebRc1pbBdYnNLWUkbDykX2TlcqrsfEbVMGQM2SAhqzgZe0iFW2pZER6NFD7iwhMQcBB Xi+ZUdpny24cnFvWcIre3K/xS8lgoO667Q4RP307+V01hJDm36sMltggYWYGYCzhn4jo jk3imrtXtHgUzPYPTNTmSImP2Hq8WfJCVaVOyo7knbpIipRn+HBpwEJvyHHRuPDj8LVM X8uGBuTNrMrmPaHMGE7dwHGIGFc7K96Ebh9Ffs2x85whKy8tglsknFS8A8XpYD1QtdD4 zbjA== X-Gm-Message-State: AOAM533+Of3BrCKMHCiS1fRZGeybN92VILG3hSA0O9ogk0r4V4UGSiDR 7LVU/MZdtIj7+rGBgxeaXnc= X-Google-Smtp-Source: ABdhPJz88N55/dJlF3pa57aofg5JUU6h/isN9xjSgCfLuMY6ifvnffVmSKBe5Fv8qihdht66qEeyaQ== X-Received: by 2002:ac8:505a:: with SMTP id h26mr29001740qtm.252.1621888660522; Mon, 24 May 2021 13:37:40 -0700 (PDT) From: Nick Rosbrook X-Google-Original-From: Nick Rosbrook To: xen-devel@lists.xenproject.prg, xen-devel@lists.xenproject.org Cc: Nick Rosbrook , George Dunlap , Ian Jackson , Wei Liu Subject: [RESEND PATCH 01/12] golang/xenlight: update generated code Date: Mon, 24 May 2021 16:36:42 -0400 Message-Id: <29e665fc1c9313f5e221e9e5e15d7c2d9c1eb4a7.1621887506.git.rosbrookn@ainfosec.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: References: X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Re-generate code to reflect changes to libxl_types.idl from the following commits: 0570d7f276 x86/msr: introduce an option for compatible MSR behavior selecti= on 7e5cffcd1e viridian: allow vCPU hotplug for Windows VMs 9835246710 viridian: remove implicit limit of 64 VPs per partition Signed-off-by: Nick Rosbrook Reviewed-by: George Dunlap --- tools/golang/xenlight/helpers.gen.go | 6 ++++++ tools/golang/xenlight/types.gen.go | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/tools/golang/xenlight/helpers.gen.go b/tools/golang/xenlight/h= elpers.gen.go index 4c60d27a9c..b454b12d52 100644 --- a/tools/golang/xenlight/helpers.gen.go +++ b/tools/golang/xenlight/helpers.gen.go @@ -1113,6 +1113,9 @@ default: return fmt.Errorf("invalid union key '%v'", x.Type)} x.ArchArm.GicVersion =3D GicVersion(xc.arch_arm.gic_version) x.ArchArm.Vuart =3D VuartType(xc.arch_arm.vuart) +if err :=3D x.ArchX86.MsrRelaxed.fromC(&xc.arch_x86.msr_relaxed);err !=3D = nil { +return fmt.Errorf("converting field ArchX86.MsrRelaxed: %v", err) +} x.Altp2M =3D Altp2MMode(xc.altp2m) x.VmtraceBufKb =3D int(xc.vmtrace_buf_kb) =20 @@ -1589,6 +1592,9 @@ default: return fmt.Errorf("invalid union key '%v'", x.Type)} xc.arch_arm.gic_version =3D C.libxl_gic_version(x.ArchArm.GicVersion) xc.arch_arm.vuart =3D C.libxl_vuart_type(x.ArchArm.Vuart) +if err :=3D x.ArchX86.MsrRelaxed.toC(&xc.arch_x86.msr_relaxed); err !=3D n= il { +return fmt.Errorf("converting field ArchX86.MsrRelaxed: %v", err) +} xc.altp2m =3D C.libxl_altp2m_mode(x.Altp2M) xc.vmtrace_buf_kb =3D C.int(x.VmtraceBufKb) =20 diff --git a/tools/golang/xenlight/types.gen.go b/tools/golang/xenlight/typ= es.gen.go index cb13002fdb..f2ceceb61c 100644 --- a/tools/golang/xenlight/types.gen.go +++ b/tools/golang/xenlight/types.gen.go @@ -211,6 +211,8 @@ ViridianEnlightenmentSynic ViridianEnlightenment =3D 7 ViridianEnlightenmentStimer ViridianEnlightenment =3D 8 ViridianEnlightenmentHcallIpi ViridianEnlightenment =3D 9 ViridianEnlightenmentExProcessorMasks ViridianEnlightenment =3D 10 +ViridianEnlightenmentNoVpLimit ViridianEnlightenment =3D 11 +ViridianEnlightenmentCpuHotplug ViridianEnlightenment =3D 12 ) =20 type Hdtype int @@ -513,6 +515,9 @@ ArchArm struct { GicVersion GicVersion Vuart VuartType } +ArchX86 struct { +MsrRelaxed Defbool +} Altp2M Altp2MMode VmtraceBufKb int } --=20 2.17.1 From nobody Mon May 6 16:59:50 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1621888693; cv=none; d=zohomail.com; s=zohoarc; b=Yyi/4vpga/hwmXDRxKIlSU8A3g/XQH7ljZxwteAAqh1zVq2gM+bpswJHnIfBvd9Dmz+KpxwfKNxPB9UUOepKe+NUULvALzKtlC7X4u2TYdjLys8ZLxkebZUDzv2PBv/Q1IRhQLg//at8C1qmb7OI2icBNV9ZkO5lPw2p4tiWePc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621888693; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=0XtO/J2QIxV3EsCnIwGPbPpW2RCXziWsO8eq8KNOMcc=; b=cI3LCTHstoF7n8EVU5mhhZ9V+d6sCVkuSobu89QO/vdKqD0d1TXKdoZ21XQL5fvHNB3WFZjj9Pc9n+WdtsbbgEzZhgfLJd3GfmWxHnEZNVZYujcS/wKvt7Co4vXclGP9UMInIt9Sd/0X198ydhBRrm+O5EcsmnwzPH07OyanSG0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1621888693164907.3829427132581; Mon, 24 May 2021 13:38:13 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.131879.246281 (Exim 4.92) (envelope-from ) id 1llHKi-0002G3-At; Mon, 24 May 2021 20:37:52 +0000 Received: by outflank-mailman (output) from mailman id 131879.246281; Mon, 24 May 2021 20:37:52 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1llHKi-0002Fp-7Q; Mon, 24 May 2021 20:37:52 +0000 Received: by outflank-mailman (input) for mailman id 131879; Mon, 24 May 2021 20:37:50 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1llHKg-0001ey-Rc for xen-devel@lists.xenproject.org; Mon, 24 May 2021 20:37:50 +0000 Received: from mail-qt1-x835.google.com (unknown [2607:f8b0:4864:20::835]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id db339771-0a00-45f4-9b4f-5e086dfa79f1; Mon, 24 May 2021 20:37:41 +0000 (UTC) Received: by mail-qt1-x835.google.com with SMTP id h24so10195544qtm.12 for ; Mon, 24 May 2021 13:37:41 -0700 (PDT) Received: from localhost.localdomain (c-73-89-138-5.hsd1.vt.comcast.net. [73.89.138.5]) by smtp.gmail.com with ESMTPSA id t25sm5142847qkt.62.2021.05.24.13.37.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 May 2021 13:37:41 -0700 (PDT) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: db339771-0a00-45f4-9b4f-5e086dfa79f1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=0XtO/J2QIxV3EsCnIwGPbPpW2RCXziWsO8eq8KNOMcc=; b=Hvl2vFOayH56YKy5obvsAuag1njomXqDiheFKyp9suXVMya6CfU1vIIcDgxSbeGqKZ hDTA2FokoUEKrbZBfyV/UcRQ7DIpiJl/SnQ2VXK7odOPqEEctLtBM/WvESVNC/zZqLds R57CiItNr6Tw4+Fyf2SUDt88MOyTxefYA+nvhVrhHPsR8zOKQ14cgdXrfMBaTSxWaLTh Z0rYUoIKTZJISuBAab/zdur3h19pYHsdRcFLa+NoG7EZg7J/G3zl42xQObC3BUnzp9CU ASckTwNXeAzxHPVFj3oLQaw548kRELz5HrTdpmazg4HrL3peXoQwiIOBiTpcTlX4YP40 X6oQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=0XtO/J2QIxV3EsCnIwGPbPpW2RCXziWsO8eq8KNOMcc=; b=h2/gAf2l74Zfa9zmYEHuPt0DehstjdSRifs36O/W3pUlgmGh58sNcq3pl3iA4WQhB2 0hRn/AbOzwUaeYVbvswJiyJRwYAfv6h8EdWVHN5Gf3LnFXundc2XelnFSoUA/BxR2kct 0WNxohYj5bRK4BGk1SVyQbYq/CJPy2d23XeE8XjNVNQVm8ULq6EyfsSD6xu+7MAP6IvT WdyGRYOt0p2K668O+98x1PZcTQfeaBnZ8nXOMuNTHs17hqGqSV3io5pmlbXLyW+1zbt1 WWt47t2fXWHrPH6A+Qi+SD52OHY3kMzRCNl6U2Wof5qG397yBocx17yvGpHK/hr1gCY2 jU8A== X-Gm-Message-State: AOAM533SLExVLaD83D+dfcV5RnQNn7sA25KNbTgtEaZSpJf9v5WCkBUb w1jVRkM3mORVbRKok21kCHI= X-Google-Smtp-Source: ABdhPJxb5DHlvWYjgRG4R6V8CZ2jfRLtIuFZLXonuizng5Z/UYV3nC/if1BuceqgJ23zy5XWKI+m8w== X-Received: by 2002:ac8:7ed2:: with SMTP id x18mr27764289qtj.26.1621888661428; Mon, 24 May 2021 13:37:41 -0700 (PDT) From: Nick Rosbrook X-Google-Original-From: Nick Rosbrook To: xen-devel@lists.xenproject.prg, xen-devel@lists.xenproject.org Cc: Nick Rosbrook , George Dunlap , Ian Jackson , Wei Liu Subject: [RESEND PATCH 02/12] golang/xenlight: fix StringList toC conversion Date: Mon, 24 May 2021 16:36:43 -0400 Message-Id: <0a15ed9eb6cd70416995f5d9805c98572eb6bd50.1621887506.git.rosbrookn@ainfosec.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: References: X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The current implementation of StringList.toC does not correctly account for how libxl_string_list is expected to be laid out in C, which is clear when one looks at libxl_string_list_length in libxl.c. In particular, StringList.toC does not account for the extra memory that should be allocated for the "sentinel" entry. And, when using the "slice trick" to create a slice that can address C memory, the unsafe.Pointer conversion should be on a C.libxl_string_list, not *C.libxl_string_list. Fix these problems by (1) allocating an extra slot in the slice used to address the C memory, and explicity set the last entry to nil so the C memory will be zeroed out, and (2) dereferencing csl in the unsafe.Pointer conversion. Signed-off-by: Nick Rosbrook Reviewed-by: George Dunlap --- tools/golang/xenlight/xenlight.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/golang/xenlight/xenlight.go b/tools/golang/xenlight/xenl= ight.go index b9189dec5c..13171d0ad1 100644 --- a/tools/golang/xenlight/xenlight.go +++ b/tools/golang/xenlight/xenlight.go @@ -491,13 +491,14 @@ func (sl *StringList) fromC(csl *C.libxl_string_list)= error { =20 func (sl StringList) toC(csl *C.libxl_string_list) error { var char *C.char - size :=3D len(sl) + size :=3D len(sl) + 1 *csl =3D (C.libxl_string_list)(C.malloc(C.ulong(size) * C.ulong(unsafe.Si= zeof(char)))) - clist :=3D (*[1 << 30]*C.char)(unsafe.Pointer(csl))[:size:size] + clist :=3D (*[1 << 30]*C.char)(unsafe.Pointer(*csl))[:size:size] =20 for i, v :=3D range sl { clist[i] =3D C.CString(v) } + clist[len(clist)-1] =3D nil =20 return nil } --=20 2.17.1 From nobody Mon May 6 16:59:50 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1621888691; cv=none; d=zohomail.com; s=zohoarc; b=oL1NwvbVPYO5m9NI8+XISX9FQsl4Ibn2v68BSkSUiT+Ygte+Wgmk7M9QKI9YLYWm6tmqKr1mFvf5dwORXI02Qw2+EEfkDkKCvrF6QndqY2LSmQh2stoQiT5rjDpIeHZ59xlscfi8oHhKd9F03oe4yp1cmCwfEwu9OGLwbAiSCVE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621888691; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=uzJn8fV3EdSO38YaBLqYQLo0qSO3Ncl/nRlIGcswrmU=; b=lxQTHsi8ja5UBzn5Hwv3YePTog+5deJ1WISaINuPCrujhj3/tk6QLqfwE1OwzdgyVa9L0haCH12Fwf7u3q5ux9Ca45tpP0g8o6X0ozc5CRM12LPKXqcooGnta9hOM0ptU71EAUtG0zml2dz54HC6vIJU9o9uV87Q0KqfsJ6Iobk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1621888691268977.5550724952188; Mon, 24 May 2021 13:38:11 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.131880.246293 (Exim 4.92) (envelope-from ) id 1llHKn-0002dc-Lv; Mon, 24 May 2021 20:37:57 +0000 Received: by outflank-mailman (output) from mailman id 131880.246293; Mon, 24 May 2021 20:37:57 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1llHKn-0002dN-Hg; Mon, 24 May 2021 20:37:57 +0000 Received: by outflank-mailman (input) for mailman id 131880; Mon, 24 May 2021 20:37:55 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1llHKl-0001ey-Rt for xen-devel@lists.xenproject.org; Mon, 24 May 2021 20:37:55 +0000 Received: from mail-qt1-x835.google.com (unknown [2607:f8b0:4864:20::835]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id c2118e63-7738-4f41-97de-3c3d00227708; Mon, 24 May 2021 20:37:43 +0000 (UTC) Received: by mail-qt1-x835.google.com with SMTP id i12so2053527qtr.7 for ; Mon, 24 May 2021 13:37:43 -0700 (PDT) Received: from localhost.localdomain (c-73-89-138-5.hsd1.vt.comcast.net. [73.89.138.5]) by smtp.gmail.com with ESMTPSA id t25sm5142847qkt.62.2021.05.24.13.37.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 May 2021 13:37:42 -0700 (PDT) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: c2118e63-7738-4f41-97de-3c3d00227708 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=uzJn8fV3EdSO38YaBLqYQLo0qSO3Ncl/nRlIGcswrmU=; b=PbqQkJ0hFYrSz/TATustRcgG2UbhpX19aadQxqd9njd05JuntAcPVgWMSMBe29gEJK CcMReC7IcnZUtLa+I+fzo+scENB89+P24hB4fxRa+3PSM7qlEPevfzSgPWYS6DH0Mb8e plNHyCCEq0OEq/CRoNGjPvUx6WuifULGO62ffpEAXGmOFWcJXKhxGF+MtIi7vQ/rm3Nm U10tQXpjwBVscDM9KZ0YyZ0uo8zjg4geNQ5IoysyoFJDCHMScaAUgm0kdH+spVBOLXfv sPaBSqaZt+16Ry1M/OQO7FBa+RFlEqZti2zxwTYozEk41Ca5eGd5Et8iwr/V7E5w0JI9 pSlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=uzJn8fV3EdSO38YaBLqYQLo0qSO3Ncl/nRlIGcswrmU=; b=Wyt6uMLRX9S/ZEO2DVEh4P7j/X8skW6AKwWmeIz0nEl7SgRHS7/dbSMTX3HKKNWx9Z SzvBwIUyOBWy2qfOBfSI3iO9kk1lkNtH+Tw0uAuqaY14KtO5Vhl7/VeqNR6Grtx9lLxJ 7/X1RTyB9HGrkoHuB9/0mAwSokSWj4seQbeBdBY3LpCKpOk9eDfDPVQCVNItULUe5DmB wTBAQgh0E1uEvmEbrjrFJL4wdi9uQsE9DZr+9Ilx7m3HC6Tdf5isZqywt1xNxqjnFcRk OBo9/U2vQp6xJ+hXwIziVybT7sDb6Ogff6/qEaS66OJaexMQoV6JmSFGLnvk37khjU05 2HZA== X-Gm-Message-State: AOAM531s2AwTQ2LYC6wPmirFEG6NNxT2nA4GsSztoU2LT9NkfUkGN8sa ImA1N/HECPbWEGgD575ekZdtu1fDgN0= X-Google-Smtp-Source: ABdhPJyWcoigwKqIU6gEAnW4NBwEWCq09Refxst0zE2koG6GhY4k6z/eLqLY7AK5dmD4+wsBteUUGg== X-Received: by 2002:ac8:1483:: with SMTP id l3mr28238595qtj.142.1621888662674; Mon, 24 May 2021 13:37:42 -0700 (PDT) From: Nick Rosbrook X-Google-Original-From: Nick Rosbrook To: xen-devel@lists.xenproject.prg, xen-devel@lists.xenproject.org Cc: Nick Rosbrook , George Dunlap , Ian Jackson , Wei Liu Subject: [RESEND PATCH 03/12] golang/xenlight: fix string conversion in generated toC functions Date: Mon, 24 May 2021 16:36:44 -0400 Message-Id: <06763aceff41167d3d3bbd603f729572c1f55c77.1621887506.git.rosbrookn@ainfosec.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: References: X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" In gengotypes.py, the toC functions only set C string fields when the Go strings are non-empty. However, to prevent segfaults in some cases, these fields should always at least be set to nil so that the C memory is zeroed out. Update gengotypes.py so that the generated code always sets these fields to nil first, and then proceeds to check if the Go string is non-empty. And, commit the new generated code. Signed-off-by: Nick Rosbrook Reviewed-by: George Dunlap --- tools/golang/xenlight/gengotypes.py | 1 + tools/golang/xenlight/helpers.gen.go | 160 +++++++++++++++++++++++++++ 2 files changed, 161 insertions(+) diff --git a/tools/golang/xenlight/gengotypes.py b/tools/golang/xenlight/ge= ngotypes.py index 3e40c3d5dc..e6daa9b92f 100644 --- a/tools/golang/xenlight/gengotypes.py +++ b/tools/golang/xenlight/gengotypes.py @@ -527,6 +527,7 @@ def xenlight_golang_convert_to_C(ty =3D None, outer_nam= e =3D None, =20 elif gotypename =3D=3D 'string': # Use the cgo helper for converting C strings. + s +=3D '{0}.{1} =3D nil\n'.format(cvarname, cname) s +=3D 'if {0}.{1} !=3D "" {{\n'.format(govarname,goname) s +=3D '{0}.{1} =3D C.CString({2}.{3})}}\n'.format(cvarname,cname, govarname,goname) diff --git a/tools/golang/xenlight/helpers.gen.go b/tools/golang/xenlight/h= elpers.gen.go index b454b12d52..5222898fb8 100644 --- a/tools/golang/xenlight/helpers.gen.go +++ b/tools/golang/xenlight/helpers.gen.go @@ -154,8 +154,10 @@ C.libxl_vnc_info_dispose(xc)} if err :=3D x.Enable.toC(&xc.enable); err !=3D nil { return fmt.Errorf("converting field Enable: %v", err) } +xc.listen =3D nil if x.Listen !=3D "" { xc.listen =3D C.CString(x.Listen)} +xc.passwd =3D nil if x.Passwd !=3D "" { xc.passwd =3D C.CString(x.Passwd)} xc.display =3D C.int(x.Display) @@ -216,11 +218,13 @@ return fmt.Errorf("converting field Enable: %v", err) } xc.port =3D C.int(x.Port) xc.tls_port =3D C.int(x.TlsPort) +xc.host =3D nil if x.Host !=3D "" { xc.host =3D C.CString(x.Host)} if err :=3D x.DisableTicketing.toC(&xc.disable_ticketing); err !=3D nil { return fmt.Errorf("converting field DisableTicketing: %v", err) } +xc.passwd =3D nil if x.Passwd !=3D "" { xc.passwd =3D C.CString(x.Passwd)} if err :=3D x.AgentMouse.toC(&xc.agent_mouse); err !=3D nil { @@ -233,8 +237,10 @@ if err :=3D x.ClipboardSharing.toC(&xc.clipboard_shari= ng); err !=3D nil { return fmt.Errorf("converting field ClipboardSharing: %v", err) } xc.usbredirection =3D C.int(x.Usbredirection) +xc.image_compression =3D nil if x.ImageCompression !=3D "" { xc.image_compression =3D C.CString(x.ImageCompression)} +xc.streaming_video =3D nil if x.StreamingVideo !=3D "" { xc.streaming_video =3D C.CString(x.StreamingVideo)} =20 @@ -278,8 +284,10 @@ return fmt.Errorf("converting field Enable: %v", err) if err :=3D x.Opengl.toC(&xc.opengl); err !=3D nil { return fmt.Errorf("converting field Opengl: %v", err) } +xc.display =3D nil if x.Display !=3D "" { xc.display =3D C.CString(x.Display)} +xc.xauthority =3D nil if x.Xauthority !=3D "" { xc.xauthority =3D C.CString(x.Xauthority)} =20 @@ -337,6 +345,7 @@ return fmt.Errorf("converting field Uuid: %v", err) } xc.domid =3D C.libxl_domid(x.Domid) xc.ssidref =3D C.uint32_t(x.Ssidref) +xc.ssid_label =3D nil if x.SsidLabel !=3D "" { xc.ssid_label =3D C.CString(x.SsidLabel)} xc.running =3D C.bool(x.Running) @@ -391,6 +400,7 @@ C.libxl_cpupoolinfo_dispose(xc)} }() =20 xc.poolid =3D C.uint32_t(x.Poolid) +xc.pool_name =3D nil if x.PoolName !=3D "" { xc.pool_name =3D C.CString(x.PoolName)} xc.sched =3D C.libxl_scheduler(x.Sched) @@ -458,9 +468,11 @@ if err !=3D nil{ C.libxl_channelinfo_dispose(xc)} }() =20 +xc.backend =3D nil if x.Backend !=3D "" { xc.backend =3D C.CString(x.Backend)} xc.backend_id =3D C.uint32_t(x.BackendId) +xc.frontend =3D nil if x.Frontend !=3D "" { xc.frontend =3D C.CString(x.Frontend)} xc.frontend_id =3D C.uint32_t(x.FrontendId) @@ -478,6 +490,7 @@ if !ok { return errors.New("wrong type for union key connection") } var pty C.libxl_channelinfo_connection_union_pty +pty.path =3D nil if tmp.Path !=3D "" { pty.path =3D C.CString(tmp.Path)} ptyBytes :=3D C.GoBytes(unsafe.Pointer(&pty),C.sizeof_libxl_channelinfo_co= nnection_union_pty) @@ -563,24 +576,33 @@ C.libxl_version_info_dispose(xc)} =20 xc.xen_version_major =3D C.int(x.XenVersionMajor) xc.xen_version_minor =3D C.int(x.XenVersionMinor) +xc.xen_version_extra =3D nil if x.XenVersionExtra !=3D "" { xc.xen_version_extra =3D C.CString(x.XenVersionExtra)} +xc.compiler =3D nil if x.Compiler !=3D "" { xc.compiler =3D C.CString(x.Compiler)} +xc.compile_by =3D nil if x.CompileBy !=3D "" { xc.compile_by =3D C.CString(x.CompileBy)} +xc.compile_domain =3D nil if x.CompileDomain !=3D "" { xc.compile_domain =3D C.CString(x.CompileDomain)} +xc.compile_date =3D nil if x.CompileDate !=3D "" { xc.compile_date =3D C.CString(x.CompileDate)} +xc.capabilities =3D nil if x.Capabilities !=3D "" { xc.capabilities =3D C.CString(x.Capabilities)} +xc.changeset =3D nil if x.Changeset !=3D "" { xc.changeset =3D C.CString(x.Changeset)} xc.virt_start =3D C.uint64_t(x.VirtStart) xc.pagesize =3D C.int(x.Pagesize) +xc.commandline =3D nil if x.Commandline !=3D "" { xc.commandline =3D C.CString(x.Commandline)} +xc.build_id =3D nil if x.BuildId !=3D "" { xc.build_id =3D C.CString(x.BuildId)} =20 @@ -650,8 +672,10 @@ if err :=3D x.Oos.toC(&xc.oos); err !=3D nil { return fmt.Errorf("converting field Oos: %v", err) } xc.ssidref =3D C.uint32_t(x.Ssidref) +xc.ssid_label =3D nil if x.SsidLabel !=3D "" { xc.ssid_label =3D C.CString(x.SsidLabel)} +xc.name =3D nil if x.Name !=3D "" { xc.name =3D C.CString(x.Name)} xc.domid =3D C.libxl_domid(x.Domid) @@ -665,6 +689,7 @@ if err :=3D x.Platformdata.toC(&xc.platformdata); err != =3D nil { return fmt.Errorf("converting field Platformdata: %v", err) } xc.poolid =3D C.uint32_t(x.Poolid) +xc.pool_name =3D nil if x.PoolName !=3D "" { xc.pool_name =3D C.CString(x.PoolName)} if err :=3D x.RunHotplugScripts.toC(&xc.run_hotplug_scripts); err !=3D nil= { @@ -712,6 +737,7 @@ C.libxl_domain_restore_params_dispose(xc)} =20 xc.checkpointed_stream =3D C.int(x.CheckpointedStream) xc.stream_version =3D C.uint32_t(x.StreamVersion) +xc.colo_proxy_script =3D nil if x.ColoProxyScript !=3D "" { xc.colo_proxy_script =3D C.CString(x.ColoProxyScript)} if err :=3D x.UserspaceColoProxy.toC(&xc.userspace_colo_proxy); err !=3D n= il { @@ -1312,6 +1338,7 @@ xc.shadow_memkb =3D C.uint64_t(x.ShadowMemkb) xc.iommu_memkb =3D C.uint64_t(x.IommuMemkb) xc.rtc_timeoffset =3D C.uint32_t(x.RtcTimeoffset) xc.exec_ssidref =3D C.uint32_t(x.ExecSsidref) +xc.exec_ssid_label =3D nil if x.ExecSsidLabel !=3D "" { xc.exec_ssid_label =3D C.CString(x.ExecSsidLabel)} if err :=3D x.Localtime.toC(&xc.localtime); err !=3D nil { @@ -1323,6 +1350,7 @@ return fmt.Errorf("converting field DisableMigrate: %= v", err) if err :=3D x.Cpuid.toC(&xc.cpuid); err !=3D nil { return fmt.Errorf("converting field Cpuid: %v", err) } +xc.blkdev_start =3D nil if x.BlkdevStart !=3D "" { xc.blkdev_start =3D C.CString(x.BlkdevStart)} if numVnumaNodes :=3D len(x.VnumaNodes); numVnumaNodes > 0 { @@ -1342,15 +1370,20 @@ if err :=3D x.DeviceModelStubdomain.toC(&xc.device_= model_stubdomain); err !=3D nil { return fmt.Errorf("converting field DeviceModelStubdomain: %v", err) } xc.stubdomain_memkb =3D C.uint64_t(x.StubdomainMemkb) +xc.stubdomain_kernel =3D nil if x.StubdomainKernel !=3D "" { xc.stubdomain_kernel =3D C.CString(x.StubdomainKernel)} +xc.stubdomain_ramdisk =3D nil if x.StubdomainRamdisk !=3D "" { xc.stubdomain_ramdisk =3D C.CString(x.StubdomainRamdisk)} +xc.device_model =3D nil if x.DeviceModel !=3D "" { xc.device_model =3D C.CString(x.DeviceModel)} xc.device_model_ssidref =3D C.uint32_t(x.DeviceModelSsidref) +xc.device_model_ssid_label =3D nil if x.DeviceModelSsidLabel !=3D "" { xc.device_model_ssid_label =3D C.CString(x.DeviceModelSsidLabel)} +xc.device_model_user =3D nil if x.DeviceModelUser !=3D "" { xc.device_model_user =3D C.CString(x.DeviceModelUser)} if err :=3D x.Extra.toC(&xc.extra); err !=3D nil { @@ -1397,17 +1430,22 @@ if err :=3D x.ClaimMode.toC(&xc.claim_mode); err != =3D nil { return fmt.Errorf("converting field ClaimMode: %v", err) } xc.event_channels =3D C.uint32_t(x.EventChannels) +xc.kernel =3D nil if x.Kernel !=3D "" { xc.kernel =3D C.CString(x.Kernel)} +xc.cmdline =3D nil if x.Cmdline !=3D "" { xc.cmdline =3D C.CString(x.Cmdline)} +xc.ramdisk =3D nil if x.Ramdisk !=3D "" { xc.ramdisk =3D C.CString(x.Ramdisk)} +xc.device_tree =3D nil if x.DeviceTree !=3D "" { xc.device_tree =3D C.CString(x.DeviceTree)} if err :=3D x.Acpi.toC(&xc.acpi); err !=3D nil { return fmt.Errorf("converting field Acpi: %v", err) } +xc.bootloader =3D nil if x.Bootloader !=3D "" { xc.bootloader =3D C.CString(x.Bootloader)} if err :=3D x.BootloaderArgs.toC(&xc.bootloader_args); err !=3D nil { @@ -1432,6 +1470,7 @@ if !ok { return errors.New("wrong type for union key type") } var hvm C.libxl_domain_build_info_type_union_hvm +hvm.firmware =3D nil if tmp.Firmware !=3D "" { hvm.firmware =3D C.CString(tmp.Firmware)} hvm.bios =3D C.libxl_bios_type(tmp.Bios) @@ -1465,6 +1504,7 @@ return fmt.Errorf("converting field ViridianEnable: %= v", err) if err :=3D tmp.ViridianDisable.toC(&hvm.viridian_disable); err !=3D nil { return fmt.Errorf("converting field ViridianDisable: %v", err) } +hvm.timeoffset =3D nil if tmp.Timeoffset !=3D "" { hvm.timeoffset =3D C.CString(tmp.Timeoffset)} if err :=3D tmp.Hpet.toC(&hvm.hpet); err !=3D nil { @@ -1481,10 +1521,13 @@ return fmt.Errorf("converting field NestedHvm: %v",= err) if err :=3D tmp.Altp2M.toC(&hvm.altp2m); err !=3D nil { return fmt.Errorf("converting field Altp2M: %v", err) } +hvm.system_firmware =3D nil if tmp.SystemFirmware !=3D "" { hvm.system_firmware =3D C.CString(tmp.SystemFirmware)} +hvm.smbios_firmware =3D nil if tmp.SmbiosFirmware !=3D "" { hvm.smbios_firmware =3D C.CString(tmp.SmbiosFirmware)} +hvm.acpi_firmware =3D nil if tmp.AcpiFirmware !=3D "" { hvm.acpi_firmware =3D C.CString(tmp.AcpiFirmware)} hvm.hdtype =3D C.libxl_hdtype(tmp.Hdtype) @@ -1497,6 +1540,7 @@ return fmt.Errorf("converting field Vga: %v", err) if err :=3D tmp.Vnc.toC(&hvm.vnc); err !=3D nil { return fmt.Errorf("converting field Vnc: %v", err) } +hvm.keymap =3D nil if tmp.Keymap !=3D "" { hvm.keymap =3D C.CString(tmp.Keymap)} if err :=3D tmp.Sdl.toC(&hvm.sdl); err !=3D nil { @@ -1509,19 +1553,23 @@ if err :=3D tmp.GfxPassthru.toC(&hvm.gfx_passthru);= err !=3D nil { return fmt.Errorf("converting field GfxPassthru: %v", err) } hvm.gfx_passthru_kind =3D C.libxl_gfx_passthru_kind(tmp.GfxPassthruKind) +hvm.serial =3D nil if tmp.Serial !=3D "" { hvm.serial =3D C.CString(tmp.Serial)} +hvm.boot =3D nil if tmp.Boot !=3D "" { hvm.boot =3D C.CString(tmp.Boot)} if err :=3D tmp.Usb.toC(&hvm.usb); err !=3D nil { return fmt.Errorf("converting field Usb: %v", err) } hvm.usbversion =3D C.int(tmp.Usbversion) +hvm.usbdevice =3D nil if tmp.Usbdevice !=3D "" { hvm.usbdevice =3D C.CString(tmp.Usbdevice)} if err :=3D tmp.VkbDevice.toC(&hvm.vkb_device); err !=3D nil { return fmt.Errorf("converting field VkbDevice: %v", err) } +hvm.soundhw =3D nil if tmp.Soundhw !=3D "" { hvm.soundhw =3D C.CString(tmp.Soundhw)} if err :=3D tmp.XenPlatformPci.toC(&hvm.xen_platform_pci); err !=3D nil { @@ -1550,18 +1598,23 @@ if !ok { return errors.New("wrong type for union key type") } var pv C.libxl_domain_build_info_type_union_pv +pv.kernel =3D nil if tmp.Kernel !=3D "" { pv.kernel =3D C.CString(tmp.Kernel)} pv.slack_memkb =3D C.uint64_t(tmp.SlackMemkb) +pv.bootloader =3D nil if tmp.Bootloader !=3D "" { pv.bootloader =3D C.CString(tmp.Bootloader)} if err :=3D tmp.BootloaderArgs.toC(&pv.bootloader_args); err !=3D nil { return fmt.Errorf("converting field BootloaderArgs: %v", err) } +pv.cmdline =3D nil if tmp.Cmdline !=3D "" { pv.cmdline =3D C.CString(tmp.Cmdline)} +pv.ramdisk =3D nil if tmp.Ramdisk !=3D "" { pv.ramdisk =3D C.CString(tmp.Ramdisk)} +pv.features =3D nil if tmp.Features !=3D "" { pv.features =3D C.CString(tmp.Features)} if err :=3D tmp.E820Host.toC(&pv.e820_host); err !=3D nil { @@ -1578,10 +1631,13 @@ var pvh C.libxl_domain_build_info_type_union_pvh if err :=3D tmp.Pvshim.toC(&pvh.pvshim); err !=3D nil { return fmt.Errorf("converting field Pvshim: %v", err) } +pvh.pvshim_path =3D nil if tmp.PvshimPath !=3D "" { pvh.pvshim_path =3D C.CString(tmp.PvshimPath)} +pvh.pvshim_cmdline =3D nil if tmp.PvshimCmdline !=3D "" { pvh.pvshim_cmdline =3D C.CString(tmp.PvshimCmdline)} +pvh.pvshim_extra =3D nil if tmp.PvshimExtra !=3D "" { pvh.pvshim_extra =3D C.CString(tmp.PvshimExtra)} pvhBytes :=3D C.GoBytes(unsafe.Pointer(&pvh),C.sizeof_libxl_domain_build_i= nfo_type_union_pvh) @@ -1635,6 +1691,7 @@ C.libxl_device_vfb_dispose(xc)} }() =20 xc.backend_domid =3D C.libxl_domid(x.BackendDomid) +xc.backend_domname =3D nil if x.BackendDomname !=3D "" { xc.backend_domname =3D C.CString(x.BackendDomname)} xc.devid =3D C.libxl_devid(x.Devid) @@ -1644,6 +1701,7 @@ return fmt.Errorf("converting field Vnc: %v", err) if err :=3D x.Sdl.toC(&xc.sdl); err !=3D nil { return fmt.Errorf("converting field Sdl: %v", err) } +xc.keymap =3D nil if x.Keymap !=3D "" { xc.keymap =3D C.CString(x.Keymap)} =20 @@ -1689,10 +1747,12 @@ C.libxl_device_vkb_dispose(xc)} }() =20 xc.backend_domid =3D C.libxl_domid(x.BackendDomid) +xc.backend_domname =3D nil if x.BackendDomname !=3D "" { xc.backend_domname =3D C.CString(x.BackendDomname)} xc.devid =3D C.libxl_devid(x.Devid) xc.backend_type =3D C.libxl_vkb_backend(x.BackendType) +xc.unique_id =3D nil if x.UniqueId !=3D "" { xc.unique_id =3D C.CString(x.UniqueId)} xc.feature_disable_keyboard =3D C.bool(x.FeatureDisableKeyboard) @@ -1758,14 +1818,18 @@ C.libxl_device_disk_dispose(xc)} }() =20 xc.backend_domid =3D C.libxl_domid(x.BackendDomid) +xc.backend_domname =3D nil if x.BackendDomname !=3D "" { xc.backend_domname =3D C.CString(x.BackendDomname)} +xc.pdev_path =3D nil if x.PdevPath !=3D "" { xc.pdev_path =3D C.CString(x.PdevPath)} +xc.vdev =3D nil if x.Vdev !=3D "" { xc.vdev =3D C.CString(x.Vdev)} xc.backend =3D C.libxl_disk_backend(x.Backend) xc.format =3D C.libxl_disk_format(x.Format) +xc.script =3D nil if x.Script !=3D "" { xc.script =3D C.CString(x.Script)} xc.removable =3D C.int(x.Removable) @@ -1781,13 +1845,17 @@ return fmt.Errorf("converting field ColoEnable: %v"= , err) if err :=3D x.ColoRestoreEnable.toC(&xc.colo_restore_enable); err !=3D nil= { return fmt.Errorf("converting field ColoRestoreEnable: %v", err) } +xc.colo_host =3D nil if x.ColoHost !=3D "" { xc.colo_host =3D C.CString(x.ColoHost)} xc.colo_port =3D C.int(x.ColoPort) +xc.colo_export =3D nil if x.ColoExport !=3D "" { xc.colo_export =3D C.CString(x.ColoExport)} +xc.active_disk =3D nil if x.ActiveDisk !=3D "" { xc.active_disk =3D C.CString(x.ActiveDisk)} +xc.hidden_disk =3D nil if x.HiddenDisk !=3D "" { xc.hidden_disk =3D C.CString(x.HiddenDisk)} =20 @@ -1883,124 +1951,180 @@ C.libxl_device_nic_dispose(xc)} }() =20 xc.backend_domid =3D C.libxl_domid(x.BackendDomid) +xc.backend_domname =3D nil if x.BackendDomname !=3D "" { xc.backend_domname =3D C.CString(x.BackendDomname)} xc.devid =3D C.libxl_devid(x.Devid) xc.mtu =3D C.int(x.Mtu) +xc.model =3D nil if x.Model !=3D "" { xc.model =3D C.CString(x.Model)} if err :=3D x.Mac.toC(&xc.mac); err !=3D nil { return fmt.Errorf("converting field Mac: %v", err) } +xc.ip =3D nil if x.Ip !=3D "" { xc.ip =3D C.CString(x.Ip)} +xc.bridge =3D nil if x.Bridge !=3D "" { xc.bridge =3D C.CString(x.Bridge)} +xc.ifname =3D nil if x.Ifname !=3D "" { xc.ifname =3D C.CString(x.Ifname)} +xc.script =3D nil if x.Script !=3D "" { xc.script =3D C.CString(x.Script)} xc.nictype =3D C.libxl_nic_type(x.Nictype) xc.rate_bytes_per_interval =3D C.uint64_t(x.RateBytesPerInterval) xc.rate_interval_usecs =3D C.uint32_t(x.RateIntervalUsecs) +xc.gatewaydev =3D nil if x.Gatewaydev !=3D "" { xc.gatewaydev =3D C.CString(x.Gatewaydev)} +xc.coloft_forwarddev =3D nil if x.ColoftForwarddev !=3D "" { xc.coloft_forwarddev =3D C.CString(x.ColoftForwarddev)} +xc.colo_sock_mirror_id =3D nil if x.ColoSockMirrorId !=3D "" { xc.colo_sock_mirror_id =3D C.CString(x.ColoSockMirrorId)} +xc.colo_sock_mirror_ip =3D nil if x.ColoSockMirrorIp !=3D "" { xc.colo_sock_mirror_ip =3D C.CString(x.ColoSockMirrorIp)} +xc.colo_sock_mirror_port =3D nil if x.ColoSockMirrorPort !=3D "" { xc.colo_sock_mirror_port =3D C.CString(x.ColoSockMirrorPort)} +xc.colo_sock_compare_pri_in_id =3D nil if x.ColoSockComparePriInId !=3D "" { xc.colo_sock_compare_pri_in_id =3D C.CString(x.ColoSockComparePriInId)} +xc.colo_sock_compare_pri_in_ip =3D nil if x.ColoSockComparePriInIp !=3D "" { xc.colo_sock_compare_pri_in_ip =3D C.CString(x.ColoSockComparePriInIp)} +xc.colo_sock_compare_pri_in_port =3D nil if x.ColoSockComparePriInPort !=3D "" { xc.colo_sock_compare_pri_in_port =3D C.CString(x.ColoSockComparePriInPort)} +xc.colo_sock_compare_sec_in_id =3D nil if x.ColoSockCompareSecInId !=3D "" { xc.colo_sock_compare_sec_in_id =3D C.CString(x.ColoSockCompareSecInId)} +xc.colo_sock_compare_sec_in_ip =3D nil if x.ColoSockCompareSecInIp !=3D "" { xc.colo_sock_compare_sec_in_ip =3D C.CString(x.ColoSockCompareSecInIp)} +xc.colo_sock_compare_sec_in_port =3D nil if x.ColoSockCompareSecInPort !=3D "" { xc.colo_sock_compare_sec_in_port =3D C.CString(x.ColoSockCompareSecInPort)} +xc.colo_sock_compare_notify_id =3D nil if x.ColoSockCompareNotifyId !=3D "" { xc.colo_sock_compare_notify_id =3D C.CString(x.ColoSockCompareNotifyId)} +xc.colo_sock_compare_notify_ip =3D nil if x.ColoSockCompareNotifyIp !=3D "" { xc.colo_sock_compare_notify_ip =3D C.CString(x.ColoSockCompareNotifyIp)} +xc.colo_sock_compare_notify_port =3D nil if x.ColoSockCompareNotifyPort !=3D "" { xc.colo_sock_compare_notify_port =3D C.CString(x.ColoSockCompareNotifyPort= )} +xc.colo_sock_redirector0_id =3D nil if x.ColoSockRedirector0Id !=3D "" { xc.colo_sock_redirector0_id =3D C.CString(x.ColoSockRedirector0Id)} +xc.colo_sock_redirector0_ip =3D nil if x.ColoSockRedirector0Ip !=3D "" { xc.colo_sock_redirector0_ip =3D C.CString(x.ColoSockRedirector0Ip)} +xc.colo_sock_redirector0_port =3D nil if x.ColoSockRedirector0Port !=3D "" { xc.colo_sock_redirector0_port =3D C.CString(x.ColoSockRedirector0Port)} +xc.colo_sock_redirector1_id =3D nil if x.ColoSockRedirector1Id !=3D "" { xc.colo_sock_redirector1_id =3D C.CString(x.ColoSockRedirector1Id)} +xc.colo_sock_redirector1_ip =3D nil if x.ColoSockRedirector1Ip !=3D "" { xc.colo_sock_redirector1_ip =3D C.CString(x.ColoSockRedirector1Ip)} +xc.colo_sock_redirector1_port =3D nil if x.ColoSockRedirector1Port !=3D "" { xc.colo_sock_redirector1_port =3D C.CString(x.ColoSockRedirector1Port)} +xc.colo_sock_redirector2_id =3D nil if x.ColoSockRedirector2Id !=3D "" { xc.colo_sock_redirector2_id =3D C.CString(x.ColoSockRedirector2Id)} +xc.colo_sock_redirector2_ip =3D nil if x.ColoSockRedirector2Ip !=3D "" { xc.colo_sock_redirector2_ip =3D C.CString(x.ColoSockRedirector2Ip)} +xc.colo_sock_redirector2_port =3D nil if x.ColoSockRedirector2Port !=3D "" { xc.colo_sock_redirector2_port =3D C.CString(x.ColoSockRedirector2Port)} +xc.colo_filter_mirror_queue =3D nil if x.ColoFilterMirrorQueue !=3D "" { xc.colo_filter_mirror_queue =3D C.CString(x.ColoFilterMirrorQueue)} +xc.colo_filter_mirror_outdev =3D nil if x.ColoFilterMirrorOutdev !=3D "" { xc.colo_filter_mirror_outdev =3D C.CString(x.ColoFilterMirrorOutdev)} +xc.colo_filter_redirector0_queue =3D nil if x.ColoFilterRedirector0Queue !=3D "" { xc.colo_filter_redirector0_queue =3D C.CString(x.ColoFilterRedirector0Queu= e)} +xc.colo_filter_redirector0_indev =3D nil if x.ColoFilterRedirector0Indev !=3D "" { xc.colo_filter_redirector0_indev =3D C.CString(x.ColoFilterRedirector0Inde= v)} +xc.colo_filter_redirector0_outdev =3D nil if x.ColoFilterRedirector0Outdev !=3D "" { xc.colo_filter_redirector0_outdev =3D C.CString(x.ColoFilterRedirector0Out= dev)} +xc.colo_filter_redirector1_queue =3D nil if x.ColoFilterRedirector1Queue !=3D "" { xc.colo_filter_redirector1_queue =3D C.CString(x.ColoFilterRedirector1Queu= e)} +xc.colo_filter_redirector1_indev =3D nil if x.ColoFilterRedirector1Indev !=3D "" { xc.colo_filter_redirector1_indev =3D C.CString(x.ColoFilterRedirector1Inde= v)} +xc.colo_filter_redirector1_outdev =3D nil if x.ColoFilterRedirector1Outdev !=3D "" { xc.colo_filter_redirector1_outdev =3D C.CString(x.ColoFilterRedirector1Out= dev)} +xc.colo_compare_pri_in =3D nil if x.ColoComparePriIn !=3D "" { xc.colo_compare_pri_in =3D C.CString(x.ColoComparePriIn)} +xc.colo_compare_sec_in =3D nil if x.ColoCompareSecIn !=3D "" { xc.colo_compare_sec_in =3D C.CString(x.ColoCompareSecIn)} +xc.colo_compare_out =3D nil if x.ColoCompareOut !=3D "" { xc.colo_compare_out =3D C.CString(x.ColoCompareOut)} +xc.colo_compare_notify_dev =3D nil if x.ColoCompareNotifyDev !=3D "" { xc.colo_compare_notify_dev =3D C.CString(x.ColoCompareNotifyDev)} +xc.colo_sock_sec_redirector0_id =3D nil if x.ColoSockSecRedirector0Id !=3D "" { xc.colo_sock_sec_redirector0_id =3D C.CString(x.ColoSockSecRedirector0Id)} +xc.colo_sock_sec_redirector0_ip =3D nil if x.ColoSockSecRedirector0Ip !=3D "" { xc.colo_sock_sec_redirector0_ip =3D C.CString(x.ColoSockSecRedirector0Ip)} +xc.colo_sock_sec_redirector0_port =3D nil if x.ColoSockSecRedirector0Port !=3D "" { xc.colo_sock_sec_redirector0_port =3D C.CString(x.ColoSockSecRedirector0Po= rt)} +xc.colo_sock_sec_redirector1_id =3D nil if x.ColoSockSecRedirector1Id !=3D "" { xc.colo_sock_sec_redirector1_id =3D C.CString(x.ColoSockSecRedirector1Id)} +xc.colo_sock_sec_redirector1_ip =3D nil if x.ColoSockSecRedirector1Ip !=3D "" { xc.colo_sock_sec_redirector1_ip =3D C.CString(x.ColoSockSecRedirector1Ip)} +xc.colo_sock_sec_redirector1_port =3D nil if x.ColoSockSecRedirector1Port !=3D "" { xc.colo_sock_sec_redirector1_port =3D C.CString(x.ColoSockSecRedirector1Po= rt)} +xc.colo_filter_sec_redirector0_queue =3D nil if x.ColoFilterSecRedirector0Queue !=3D "" { xc.colo_filter_sec_redirector0_queue =3D C.CString(x.ColoFilterSecRedirect= or0Queue)} +xc.colo_filter_sec_redirector0_indev =3D nil if x.ColoFilterSecRedirector0Indev !=3D "" { xc.colo_filter_sec_redirector0_indev =3D C.CString(x.ColoFilterSecRedirect= or0Indev)} +xc.colo_filter_sec_redirector0_outdev =3D nil if x.ColoFilterSecRedirector0Outdev !=3D "" { xc.colo_filter_sec_redirector0_outdev =3D C.CString(x.ColoFilterSecRedirec= tor0Outdev)} +xc.colo_filter_sec_redirector1_queue =3D nil if x.ColoFilterSecRedirector1Queue !=3D "" { xc.colo_filter_sec_redirector1_queue =3D C.CString(x.ColoFilterSecRedirect= or1Queue)} +xc.colo_filter_sec_redirector1_indev =3D nil if x.ColoFilterSecRedirector1Indev !=3D "" { xc.colo_filter_sec_redirector1_indev =3D C.CString(x.ColoFilterSecRedirect= or1Indev)} +xc.colo_filter_sec_redirector1_outdev =3D nil if x.ColoFilterSecRedirector1Outdev !=3D "" { xc.colo_filter_sec_redirector1_outdev =3D C.CString(x.ColoFilterSecRedirec= tor1Outdev)} +xc.colo_filter_sec_rewriter0_queue =3D nil if x.ColoFilterSecRewriter0Queue !=3D "" { xc.colo_filter_sec_rewriter0_queue =3D C.CString(x.ColoFilterSecRewriter0Q= ueue)} +xc.colo_checkpoint_host =3D nil if x.ColoCheckpointHost !=3D "" { xc.colo_checkpoint_host =3D C.CString(x.ColoCheckpointHost)} +xc.colo_checkpoint_port =3D nil if x.ColoCheckpointPort !=3D "" { xc.colo_checkpoint_port =3D C.CString(x.ColoCheckpointPort)} =20 @@ -2053,6 +2177,7 @@ xc.power_mgmt =3D C.bool(x.PowerMgmt) xc.permissive =3D C.bool(x.Permissive) xc.seize =3D C.bool(x.Seize) xc.rdm_policy =3D C.libxl_rdm_reserve_policy(x.RdmPolicy) +xc.name =3D nil if x.Name !=3D "" { xc.name =3D C.CString(x.Name)} =20 @@ -2126,6 +2251,7 @@ xc.devid =3D C.libxl_devid(x.Devid) xc.version =3D C.int(x.Version) xc.ports =3D C.int(x.Ports) xc.backend_domid =3D C.libxl_domid(x.BackendDomid) +xc.backend_domname =3D nil if x.BackendDomname !=3D "" { xc.backend_domname =3D C.CString(x.BackendDomname)} =20 @@ -2223,6 +2349,7 @@ if err !=3D nil{ C.libxl_device_dtdev_dispose(xc)} }() =20 +xc.path =3D nil if x.Path !=3D "" { xc.path =3D C.CString(x.Path)} =20 @@ -2259,6 +2386,7 @@ C.libxl_device_vtpm_dispose(xc)} }() =20 xc.backend_domid =3D C.libxl_domid(x.BackendDomid) +xc.backend_domname =3D nil if x.BackendDomname !=3D "" { xc.backend_domname =3D C.CString(x.BackendDomname)} xc.devid =3D C.libxl_devid(x.Devid) @@ -2299,12 +2427,16 @@ C.libxl_device_p9_dispose(xc)} }() =20 xc.backend_domid =3D C.libxl_domid(x.BackendDomid) +xc.backend_domname =3D nil if x.BackendDomname !=3D "" { xc.backend_domname =3D C.CString(x.BackendDomname)} +xc.tag =3D nil if x.Tag !=3D "" { xc.tag =3D C.CString(x.Tag)} +xc.path =3D nil if x.Path !=3D "" { xc.path =3D C.CString(x.Path)} +xc.security_model =3D nil if x.SecurityModel !=3D "" { xc.security_model =3D C.CString(x.SecurityModel)} xc.devid =3D C.libxl_devid(x.Devid) @@ -2339,6 +2471,7 @@ C.libxl_device_pvcallsif_dispose(xc)} }() =20 xc.backend_domid =3D C.libxl_domid(x.BackendDomid) +xc.backend_domname =3D nil if x.BackendDomname !=3D "" { xc.backend_domname =3D C.CString(x.BackendDomname)} xc.devid =3D C.libxl_devid(x.Devid) @@ -2399,9 +2532,11 @@ C.libxl_device_channel_dispose(xc)} }() =20 xc.backend_domid =3D C.libxl_domid(x.BackendDomid) +xc.backend_domname =3D nil if x.BackendDomname !=3D "" { xc.backend_domname =3D C.CString(x.BackendDomname)} xc.devid =3D C.libxl_devid(x.Devid) +xc.name =3D nil if x.Name !=3D "" { xc.name =3D C.CString(x.Name)} xc.connection =3D C.libxl_channel_connection(x.Connection) @@ -2416,6 +2551,7 @@ if !ok { return errors.New("wrong type for union key connection") } var socket C.libxl_device_channel_connection_union_socket +socket.path =3D nil if tmp.Path !=3D "" { socket.path =3D C.CString(tmp.Path)} socketBytes :=3D C.GoBytes(unsafe.Pointer(&socket),C.sizeof_libxl_device_c= hannel_connection_union_socket) @@ -2452,6 +2588,7 @@ if err !=3D nil{ C.libxl_connector_param_dispose(xc)} }() =20 +xc.unique_id =3D nil if x.UniqueId !=3D "" { xc.unique_id =3D C.CString(x.UniqueId)} xc.width =3D C.uint32_t(x.Width) @@ -2497,6 +2634,7 @@ C.libxl_device_vdispl_dispose(xc)} }() =20 xc.backend_domid =3D C.libxl_domid(x.BackendDomid) +xc.backend_domname =3D nil if x.BackendDomname !=3D "" { xc.backend_domname =3D C.CString(x.BackendDomname)} xc.devid =3D C.libxl_devid(x.Devid) @@ -2608,6 +2746,7 @@ if err !=3D nil{ C.libxl_vsnd_stream_dispose(xc)} }() =20 +xc.unique_id =3D nil if x.UniqueId !=3D "" { xc.unique_id =3D C.CString(x.UniqueId)} xc._type =3D C.libxl_vsnd_stream_type(x.Type) @@ -2654,6 +2793,7 @@ if err !=3D nil{ C.libxl_vsnd_pcm_dispose(xc)} }() =20 +xc.name =3D nil if x.Name !=3D "" { xc.name =3D C.CString(x.Name)} if err :=3D x.Params.toC(&xc.params); err !=3D nil { @@ -2714,11 +2854,14 @@ C.libxl_device_vsnd_dispose(xc)} }() =20 xc.backend_domid =3D C.libxl_domid(x.BackendDomid) +xc.backend_domname =3D nil if x.BackendDomname !=3D "" { xc.backend_domname =3D C.CString(x.BackendDomname)} xc.devid =3D C.libxl_devid(x.Devid) +xc.short_name =3D nil if x.ShortName !=3D "" { xc.short_name =3D C.CString(x.ShortName)} +xc.long_name =3D nil if x.LongName !=3D "" { xc.long_name =3D C.CString(x.LongName)} if err :=3D x.Params.toC(&xc.params); err !=3D nil { @@ -3103,9 +3246,11 @@ if err !=3D nil{ C.libxl_diskinfo_dispose(xc)} }() =20 +xc.backend =3D nil if x.Backend !=3D "" { xc.backend =3D C.CString(x.Backend)} xc.backend_id =3D C.uint32_t(x.BackendId) +xc.frontend =3D nil if x.Frontend !=3D "" { xc.frontend =3D C.CString(x.Frontend)} xc.frontend_id =3D C.uint32_t(x.FrontendId) @@ -3149,9 +3294,11 @@ if err !=3D nil{ C.libxl_nicinfo_dispose(xc)} }() =20 +xc.backend =3D nil if x.Backend !=3D "" { xc.backend =3D C.CString(x.Backend)} xc.backend_id =3D C.uint32_t(x.BackendId) +xc.frontend =3D nil if x.Frontend !=3D "" { xc.frontend =3D C.CString(x.Frontend)} xc.frontend_id =3D C.uint32_t(x.FrontendId) @@ -3198,9 +3345,11 @@ if err !=3D nil{ C.libxl_vtpminfo_dispose(xc)} }() =20 +xc.backend =3D nil if x.Backend !=3D "" { xc.backend =3D C.CString(x.Backend)} xc.backend_id =3D C.uint32_t(x.BackendId) +xc.frontend =3D nil if x.Frontend !=3D "" { xc.frontend =3D C.CString(x.Frontend)} xc.frontend_id =3D C.uint32_t(x.FrontendId) @@ -3254,9 +3403,11 @@ xc._type =3D C.libxl_usbctrl_type(x.Type) xc.devid =3D C.libxl_devid(x.Devid) xc.version =3D C.int(x.Version) xc.ports =3D C.int(x.Ports) +xc.backend =3D nil if x.Backend !=3D "" { xc.backend =3D C.CString(x.Backend)} xc.backend_id =3D C.uint32_t(x.BackendId) +xc.frontend =3D nil if x.Frontend !=3D "" { xc.frontend =3D C.CString(x.Frontend)} xc.frontend_id =3D C.uint32_t(x.FrontendId) @@ -3422,6 +3573,7 @@ if err !=3D nil{ C.libxl_connectorinfo_dispose(xc)} }() =20 +xc.unique_id =3D nil if x.UniqueId !=3D "" { xc.unique_id =3D C.CString(x.UniqueId)} xc.width =3D C.uint32_t(x.Width) @@ -3473,9 +3625,11 @@ if err !=3D nil{ C.libxl_vdisplinfo_dispose(xc)} }() =20 +xc.backend =3D nil if x.Backend !=3D "" { xc.backend =3D C.CString(x.Backend)} xc.backend_id =3D C.uint32_t(x.BackendId) +xc.frontend =3D nil if x.Frontend !=3D "" { xc.frontend =3D C.CString(x.Frontend)} xc.frontend_id =3D C.uint32_t(x.FrontendId) @@ -3611,9 +3765,11 @@ if err !=3D nil{ C.libxl_vsndinfo_dispose(xc)} }() =20 +xc.backend =3D nil if x.Backend !=3D "" { xc.backend =3D C.CString(x.Backend)} xc.backend_id =3D C.uint32_t(x.BackendId) +xc.frontend =3D nil if x.Frontend !=3D "" { xc.frontend =3D C.CString(x.Frontend)} xc.frontend_id =3D C.uint32_t(x.FrontendId) @@ -3664,9 +3820,11 @@ if err !=3D nil{ C.libxl_vkbinfo_dispose(xc)} }() =20 +xc.backend =3D nil if x.Backend !=3D "" { xc.backend =3D C.CString(x.Backend)} xc.backend_id =3D C.uint32_t(x.BackendId) +xc.frontend =3D nil if x.Frontend !=3D "" { xc.frontend =3D C.CString(x.Frontend)} xc.frontend_id =3D C.uint32_t(x.FrontendId) @@ -3902,6 +4060,7 @@ return fmt.Errorf("converting field Compression: %v",= err) if err :=3D x.Netbuf.toC(&xc.netbuf); err !=3D nil { return fmt.Errorf("converting field Netbuf: %v", err) } +xc.netbufscript =3D nil if x.Netbufscript !=3D "" { xc.netbufscript =3D C.CString(x.Netbufscript)} if err :=3D x.Diskbuf.toC(&xc.diskbuf); err !=3D nil { @@ -4035,6 +4194,7 @@ if !ok { return errors.New("wrong type for union key type") } var disk_eject C.libxl_event_type_union_disk_eject +disk_eject.vdev =3D nil if tmp.Vdev !=3D "" { disk_eject.vdev =3D C.CString(tmp.Vdev)} if err :=3D tmp.Disk.toC(&disk_eject.disk); err !=3D nil { --=20 2.17.1 From nobody Mon May 6 16:59:50 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1621888696; cv=none; d=zohomail.com; s=zohoarc; b=cJeA2c4/bNpJ3hynbnZH15TDeIuUNgLd1GnCP5w9omeXdjMuQcVgv7145f5238zmiCcZ//eFafWxvXiE9vxWtpt7UGlH2Ye0xoxaDdMcfLevwvPeP/0LlNJWRdhKKXgGg3SL2Mr1NbsfCX/l7q27bku2k0MbgxCMLCb9AJWvGn4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621888696; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=hfBP94KizJpDruLBLBLMUfOcD8AldREODeB/q9SIq2M=; b=FpqCmU+pa3wywaI+dUBcSpfC6Cl7WKv+Dh+reRbZ1GihC3V+V5XE8bMFve5l1C+N301pQuK1qCB6C0qXkJ1cNG1hNzspsZ4+jlYP7E0Mb9Yq7UgjFLcAmGpL9VsuFnaKsXJFYnYegsXBXlMJPwtJFG9sc9qabVtTdWRzv+8Z298= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1621888696845266.6278834722947; Mon, 24 May 2021 13:38:16 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.131883.246304 (Exim 4.92) (envelope-from ) id 1llHKs-0003Aj-6M; Mon, 24 May 2021 20:38:02 +0000 Received: by outflank-mailman (output) from mailman id 131883.246304; Mon, 24 May 2021 20:38:02 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1llHKs-0003AY-2A; Mon, 24 May 2021 20:38:02 +0000 Received: by outflank-mailman (input) for mailman id 131883; Mon, 24 May 2021 20:38:00 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1llHKq-0001ey-S5 for xen-devel@lists.xenproject.org; Mon, 24 May 2021 20:38:00 +0000 Received: from mail-qt1-x829.google.com (unknown [2607:f8b0:4864:20::829]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 3e19ada3-e1b5-41ea-b64a-fbe3971da842; Mon, 24 May 2021 20:37:43 +0000 (UTC) Received: by mail-qt1-x829.google.com with SMTP id s12so12402206qta.3 for ; Mon, 24 May 2021 13:37:43 -0700 (PDT) Received: from localhost.localdomain (c-73-89-138-5.hsd1.vt.comcast.net. [73.89.138.5]) by smtp.gmail.com with ESMTPSA id t25sm5142847qkt.62.2021.05.24.13.37.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 May 2021 13:37:43 -0700 (PDT) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 3e19ada3-e1b5-41ea-b64a-fbe3971da842 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=hfBP94KizJpDruLBLBLMUfOcD8AldREODeB/q9SIq2M=; b=EQMocBqOydCDD/W8SK/dRmkPliwTZBPDqqBue37vjCJUpXE7Kazzvg3C0+yP6P18Ii SfhM0N145Miw5QwY7hJq+dRJc/v1S4Rie7TO5ZA3rT1Jlni76D5sx9SwsCJSVlHQxnsX WY34MhAbv/qGh332hnI+zir9IDLTnNlCkAxVd1IrVcG4yzAM4iGiSVT+fbdEXMa9RiyC ubjhuVK2GJrSvhjNjRF/U52xlmzAo5eF1a5BYLminyYi9qBDYbFkk6Vh19o3PsZJOmik 1WFJqU/5Gz6RT1ZCY2N3QK+lVZ+7ejaaLFjq/J5s30t2uQIilmL0Aiuwn7hd3GUNVowB C4Tg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=hfBP94KizJpDruLBLBLMUfOcD8AldREODeB/q9SIq2M=; b=CoJyKzt1vSaoFrfQX3iggknKs0kp+u0HCWACOL/xPQU+Zsikb1RjWXLr+4vUAKkvOT 1P2Mr5b1b4JrABLAFvqXXTHf7hB7bz6RK3zRzkxu5IdVvT6IWd9Y7PD60CPpnTo5AQq7 nHTs22ZtKkKzm752sAD665nVQp24xuhyobJ7q3sEriUgDvrPkz6DYzDg4u6Iw0PGQdls 3ZRGkN2yL4g2sO0uEPGUIfSDHF/rGUvCKG+WtqRCX8mef9Jwa//LEbWg5IXa8LKdJh6G 3+1PerPMtIyNiwL9IqAiAfeHgF+HBrcYiyiaoeZ3U7L/j2rx9q2Jo9Lu/BwgpD1U9A8O v8og== X-Gm-Message-State: AOAM532xqX1Mmai9CZHk2mVSwRd8GKVFLI/Ayw3KKFR7GZOXbu4zKZVL y57B325N0wr6ZPq5GZy8LIA= X-Google-Smtp-Source: ABdhPJyKe6Or6ryElDeBwz+s/qA1wfWs/ZYdvbgEtPXmQ70fTLPF1ZXiKPco+HZJ8+TI5BqNoB/45A== X-Received: by 2002:ac8:66da:: with SMTP id m26mr28281280qtp.102.1621888663707; Mon, 24 May 2021 13:37:43 -0700 (PDT) From: Nick Rosbrook X-Google-Original-From: Nick Rosbrook To: xen-devel@lists.xenproject.prg, xen-devel@lists.xenproject.org Cc: Nick Rosbrook , George Dunlap , Ian Jackson , Wei Liu Subject: [RESEND PATCH 04/12] golang/xenlight: export keyed union interface types Date: Mon, 24 May 2021 16:36:45 -0400 Message-Id: <29a3fbc93262cb9b31f02d6c94c018b200dfa43e.1621887506.git.rosbrookn@ainfosec.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: References: X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" For structs that have a keyed union, e.g. DomainBuildInfo, the TypeUnion field must be exported so that package users can get/set the fields within. This means that users are aware of the existence of the interface type used in those fields (see [1]), so it is awkward that the interface itself is not exported. However, the single method within the interface must remain unexported so that users cannot mistakenly "implement" those interfaces. Since there seems to be no reason to do otherwise, export the keyed union interface types. [1] https://pkg.go.dev/xenbits.xenproject.org/git-http/xen.git/tools/golang= /xenlight?tab=3Ddoc#DeviceUsbdev Signed-off-by: Nick Rosbrook Reviewed-by: George Dunlap --- tools/golang/xenlight/gengotypes.py | 6 +-- tools/golang/xenlight/types.gen.go | 58 ++++++++++++++--------------- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/tools/golang/xenlight/gengotypes.py b/tools/golang/xenlight/ge= ngotypes.py index e6daa9b92f..3796632f7d 100644 --- a/tools/golang/xenlight/gengotypes.py +++ b/tools/golang/xenlight/gengotypes.py @@ -159,7 +159,7 @@ def xenlight_golang_define_union(ty =3D None, struct_na= me =3D '', union_name =3D ''): extras =3D [] =20 interface_name =3D '{0}_{1}_union'.format(struct_name, ty.keyvar.name) - interface_name =3D xenlight_golang_fmt_name(interface_name, exported= =3DFalse) + interface_name =3D xenlight_golang_fmt_name(interface_name) =20 s +=3D 'type {0} interface {{\n'.format(interface_name) s +=3D 'is{0}()\n'.format(interface_name) @@ -341,7 +341,7 @@ def xenlight_golang_union_from_C(ty =3D None, union_nam= e =3D '', struct_name =3D ''): field_name =3D xenlight_golang_fmt_name('{0}_union'.format(keyname)) =20 interface_name =3D '{0}_{1}_union'.format(struct_name, keyname) - interface_name =3D xenlight_golang_fmt_name(interface_name, exported= =3DFalse) + interface_name =3D xenlight_golang_fmt_name(interface_name) =20 cgo_keyname =3D keyname if cgo_keyname in go_keywords: @@ -546,7 +546,7 @@ def xenlight_golang_union_to_C(ty =3D None, union_name = =3D '', gokeytype =3D xenlight_golang_fmt_name(keytype) =20 interface_name =3D '{0}_{1}_union'.format(struct_name, keyname) - interface_name =3D xenlight_golang_fmt_name(interface_name, exported= =3DFalse) + interface_name =3D xenlight_golang_fmt_name(interface_name) =20 cgo_keyname =3D keyname if cgo_keyname in go_keywords: diff --git a/tools/golang/xenlight/types.gen.go b/tools/golang/xenlight/typ= es.gen.go index f2ceceb61c..a214dd9df6 100644 --- a/tools/golang/xenlight/types.gen.go +++ b/tools/golang/xenlight/types.gen.go @@ -337,18 +337,18 @@ State int Evtch int Rref int Connection ChannelConnection -ConnectionUnion channelinfoConnectionUnion +ConnectionUnion ChannelinfoConnectionUnion } =20 -type channelinfoConnectionUnion interface { -ischannelinfoConnectionUnion() +type ChannelinfoConnectionUnion interface { +isChannelinfoConnectionUnion() } =20 type ChannelinfoConnectionUnionPty struct { Path string } =20 -func (x ChannelinfoConnectionUnionPty) ischannelinfoConnectionUnion(){} +func (x ChannelinfoConnectionUnionPty) isChannelinfoConnectionUnion(){} =20 type Vminfo struct { Uuid Uuid @@ -510,7 +510,7 @@ Apic Defbool DmRestrict Defbool Tee TeeType Type DomainType -TypeUnion domainBuildInfoTypeUnion +TypeUnion DomainBuildInfoTypeUnion ArchArm struct { GicVersion GicVersion Vuart VuartType @@ -522,8 +522,8 @@ Altp2M Altp2MMode VmtraceBufKb int } =20 -type domainBuildInfoTypeUnion interface { -isdomainBuildInfoTypeUnion() +type DomainBuildInfoTypeUnion interface { +isDomainBuildInfoTypeUnion() } =20 type DomainBuildInfoTypeUnionHvm struct { @@ -575,7 +575,7 @@ RdmMemBoundaryMemkb uint64 McaCaps uint64 } =20 -func (x DomainBuildInfoTypeUnionHvm) isdomainBuildInfoTypeUnion(){} +func (x DomainBuildInfoTypeUnionHvm) isDomainBuildInfoTypeUnion(){} =20 type DomainBuildInfoTypeUnionPv struct { Kernel string @@ -588,7 +588,7 @@ Features string E820Host Defbool } =20 -func (x DomainBuildInfoTypeUnionPv) isdomainBuildInfoTypeUnion(){} +func (x DomainBuildInfoTypeUnionPv) isDomainBuildInfoTypeUnion(){} =20 type DomainBuildInfoTypeUnionPvh struct { Pvshim Defbool @@ -597,7 +597,7 @@ PvshimCmdline string PvshimExtra string } =20 -func (x DomainBuildInfoTypeUnionPvh) isdomainBuildInfoTypeUnion(){} +func (x DomainBuildInfoTypeUnionPvh) isDomainBuildInfoTypeUnion(){} =20 type DeviceVfb struct { BackendDomid Domid @@ -761,11 +761,11 @@ type DeviceUsbdev struct { Ctrl Devid Port int Type UsbdevType -TypeUnion deviceUsbdevTypeUnion +TypeUnion DeviceUsbdevTypeUnion } =20 -type deviceUsbdevTypeUnion interface { -isdeviceUsbdevTypeUnion() +type DeviceUsbdevTypeUnion interface { +isDeviceUsbdevTypeUnion() } =20 type DeviceUsbdevTypeUnionHostdev struct { @@ -773,7 +773,7 @@ Hostbus byte Hostaddr byte } =20 -func (x DeviceUsbdevTypeUnionHostdev) isdeviceUsbdevTypeUnion(){} +func (x DeviceUsbdevTypeUnionHostdev) isDeviceUsbdevTypeUnion(){} =20 type DeviceDtdev struct { Path string @@ -807,18 +807,18 @@ BackendDomname string Devid Devid Name string Connection ChannelConnection -ConnectionUnion deviceChannelConnectionUnion +ConnectionUnion DeviceChannelConnectionUnion } =20 -type deviceChannelConnectionUnion interface { -isdeviceChannelConnectionUnion() +type DeviceChannelConnectionUnion interface { +isDeviceChannelConnectionUnion() } =20 type DeviceChannelConnectionUnionSocket struct { Path string } =20 -func (x DeviceChannelConnectionUnionSocket) isdeviceChannelConnectionUnion= (){} +func (x DeviceChannelConnectionUnionSocket) isDeviceChannelConnectionUnion= (){} =20 type ConnectorParam struct { UniqueId string @@ -1116,31 +1116,31 @@ Domid Domid Domuuid Uuid ForUser uint64 Type EventType -TypeUnion eventTypeUnion +TypeUnion EventTypeUnion } =20 -type eventTypeUnion interface { -iseventTypeUnion() +type EventTypeUnion interface { +isEventTypeUnion() } =20 type EventTypeUnionDomainShutdown struct { ShutdownReason byte } =20 -func (x EventTypeUnionDomainShutdown) iseventTypeUnion(){} +func (x EventTypeUnionDomainShutdown) isEventTypeUnion(){} =20 type EventTypeUnionDiskEject struct { Vdev string Disk DeviceDisk } =20 -func (x EventTypeUnionDiskEject) iseventTypeUnion(){} +func (x EventTypeUnionDiskEject) isEventTypeUnion(){} =20 type EventTypeUnionOperationComplete struct { Rc int } =20 -func (x EventTypeUnionOperationComplete) iseventTypeUnion(){} +func (x EventTypeUnionOperationComplete) isEventTypeUnion(){} =20 type PsrCmtType int const( @@ -1175,11 +1175,11 @@ PsrFeatTypeMba PsrFeatType =3D 2 type PsrHwInfo struct { Id uint32 Type PsrFeatType -TypeUnion psrHwInfoTypeUnion +TypeUnion PsrHwInfoTypeUnion } =20 -type psrHwInfoTypeUnion interface { -ispsrHwInfoTypeUnion() +type PsrHwInfoTypeUnion interface { +isPsrHwInfoTypeUnion() } =20 type PsrHwInfoTypeUnionCat struct { @@ -1188,7 +1188,7 @@ CbmLen uint32 CdpEnabled bool } =20 -func (x PsrHwInfoTypeUnionCat) ispsrHwInfoTypeUnion(){} +func (x PsrHwInfoTypeUnionCat) isPsrHwInfoTypeUnion(){} =20 type PsrHwInfoTypeUnionMba struct { CosMax uint32 @@ -1196,5 +1196,5 @@ ThrtlMax uint32 Linear bool } =20 -func (x PsrHwInfoTypeUnionMba) ispsrHwInfoTypeUnion(){} +func (x PsrHwInfoTypeUnionMba) isPsrHwInfoTypeUnion(){} =20 --=20 2.17.1 From nobody Mon May 6 16:59:50 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1621888701; cv=none; d=zohomail.com; s=zohoarc; b=dxqx7s9I7lkAc7QgXfwBTkdEuidg1DZnZGIvcPIy+ruv3kwaI6W3u+F6aQjDkVN4JxSGFadgCs88s/cnUzC03I6jkzdXZnBg7YfDVhv6oMHXPw81tNC3u2qeSOdHrvra5z1wRDG3KfE0L52GgO8H+t5DWW82FMbj6vV7ezwveGQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621888701; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=gmgGK17wIRa1DlqHFSQ1z3Zv/54AdOc2b0ySCVRt0yU=; b=QrNWJbehm3AxIFsh4MoXoyaH9NJx7/jZokc4rz0cCS9nRw4YX4BFeoyw7owx/EDRArbCNr+Qox3iWRUx+VTF0AIxH5VYwGFMpeB3fKmL8CSDGBirGkGNWDt9SlqGUMYHtMcVrhd7MaAHl9oErjmCgGYoCCecInP+dcySrzQpXVU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1621888701478231.6978720393396; Mon, 24 May 2021 13:38:21 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.131885.246315 (Exim 4.92) (envelope-from ) id 1llHKx-0003d5-GZ; Mon, 24 May 2021 20:38:07 +0000 Received: by outflank-mailman (output) from mailman id 131885.246315; Mon, 24 May 2021 20:38:07 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1llHKx-0003cg-Cj; Mon, 24 May 2021 20:38:07 +0000 Received: by outflank-mailman (input) for mailman id 131885; Mon, 24 May 2021 20:38:05 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1llHKv-0001ey-S7 for xen-devel@lists.xenproject.org; Mon, 24 May 2021 20:38:05 +0000 Received: from mail-qt1-x835.google.com (unknown [2607:f8b0:4864:20::835]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 371a11a3-daef-4f03-870a-063378a3ebe8; Mon, 24 May 2021 20:37:45 +0000 (UTC) Received: by mail-qt1-x835.google.com with SMTP id f8so21602691qth.6 for ; Mon, 24 May 2021 13:37:45 -0700 (PDT) Received: from localhost.localdomain (c-73-89-138-5.hsd1.vt.comcast.net. [73.89.138.5]) by smtp.gmail.com with ESMTPSA id t25sm5142847qkt.62.2021.05.24.13.37.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 May 2021 13:37:44 -0700 (PDT) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 371a11a3-daef-4f03-870a-063378a3ebe8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=gmgGK17wIRa1DlqHFSQ1z3Zv/54AdOc2b0ySCVRt0yU=; b=B05k9j4uMyR1hRjIwmDxThYoVmBYL2zqqZjqz943qVU+pE1JKzh6R+y+4aYxEetmDn ZRUXr9S93x/qWIe/8BXNDwjEXv0h1jYA2DnIGWFaAVSaIHd2keq3W96tCUdrscC2rAIK fvXYT84dAnD2sf6fe4Zd+toxcowKimjLuC4uFK+pQMKthzKPnYuzmopkzRUI6X4F1bGj m4uLFrRufBfGPmnI2efNm6UNsQIFVgCXL+sADX2VYz4fBkRldOXlXIVJQvRaGFKI8iaE A+LKWKSFVyXYwPVRsPN90Pw5kVe52qIiFh1kuOEiieRyjw6OypJ+f5L0f4bvwucRB7EY +JIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=gmgGK17wIRa1DlqHFSQ1z3Zv/54AdOc2b0ySCVRt0yU=; b=paC669tCplGCgMzXHNTvj+mTnp+WK272/AVudAfAd0yRyXuji+wtTeV6R60HEFRkvw YWa0IzOeGP3HUijzVw8PqOhuOTwhCtWs/obNbJmvqu5WdlTIvRcQlLe7EUAX6muNWrnQ ArlpaZSPtgSf1NShXGWDkP0Cx37U/wPpVke4shfyz1iv5+KbwuM3oDhqJYCXnk6ccvb5 WLh9OPMzxAwMhj6FnMZMnnOtksr1L+roCuVH8e7rBD40Ae1IZUNcKBDuBVXMQqIaSSlD huuArC4vNTOpsTeYAbqqbP5CBLUhfOJ/B+sJrbucB257FmTirMP40TGKDmRQXWQV4MQo CPHg== X-Gm-Message-State: AOAM5301rGOuLqW7EKwS2oYiWlvZh+lhO2lFw5g8Ov/kzFXViuwR/+uS 7GpZQ9kN98nankTepQqNv7s= X-Google-Smtp-Source: ABdhPJydQniZGUyZMjJR+HeCNDL6lVO7LbJWXrKQPMkjEMzzgQBlIsoCwdB54Q4X4AyvnLF9qbJ/Uw== X-Received: by 2002:a05:622a:144d:: with SMTP id v13mr735850qtx.4.1621888664835; Mon, 24 May 2021 13:37:44 -0700 (PDT) From: Nick Rosbrook X-Google-Original-From: Nick Rosbrook To: xen-devel@lists.xenproject.prg, xen-devel@lists.xenproject.org Cc: Nick Rosbrook , George Dunlap , Ian Jackson , Wei Liu Subject: [RESEND PATCH 05/12] golang/xenlight: use struct pointers in keyed union fields Date: Mon, 24 May 2021 16:36:46 -0400 Message-Id: X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: References: X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Currently, when marshalig Go types with keyed union fields, we assign the value of the struct (e.g. DomainBuildInfoTypeUnionHvm) which implements the interface of the keyed union field (e.g. DomainBuildInfoTypeUnion). As-is, this means that if a populated DomainBuildInfo is marshaled to e.g. JSON, unmarshaling back to DomainBuildInfo will fail. When the encoding/json is unmarshaling data into a Go type, and encounters a JSON object, it basically can either marshal the data into an empty interface, a map, or a struct. It cannot, however, marshal data into an interface with at least one method defined on it (e.g. DomainBuildInfoTypeUnion). Before this check is done, however, the decoder will check if the Go type is a pointer, and dereference it if so. It will then use the type of this value as the "target" type. This means that if the TypeUnion field is populated with a DomainBuildInfoTypeUnion, the decoder will see a non-empty interface and fail. If the TypeUnion field is populated with a *DomainBuildInfoTypeUnionHvm, it dereferences the pointer and sees a struct instead, allowing decoding to continue normally. Since there does not appear to be a strict need for NOT using pointers in these fields, update code generation to set keyed union fields to pointers of their implementing structs. Signed-off-by: Nick Rosbrook Reviewed-by: George Dunlap --- tools/golang/xenlight/gengotypes.py | 4 +-- tools/golang/xenlight/helpers.gen.go | 44 ++++++++++++++-------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/tools/golang/xenlight/gengotypes.py b/tools/golang/xenlight/ge= ngotypes.py index 3796632f7d..57f2576468 100644 --- a/tools/golang/xenlight/gengotypes.py +++ b/tools/golang/xenlight/gengotypes.py @@ -404,7 +404,7 @@ def xenlight_golang_union_from_C(ty =3D None, union_nam= e =3D '', struct_name =3D ''): s +=3D 'if err :=3D {0}.fromC(xc);'.format(goname) s +=3D 'err !=3D nil {{\n return fmt.Errorf("converting field {0}:= %v", err)\n}}\n'.format(goname) =20 - s +=3D 'x.{0} =3D {1}\n'.format(field_name, goname) + s +=3D 'x.{0} =3D &{1}\n'.format(field_name, goname) =20 # End switch statement s +=3D 'default:\n' @@ -571,7 +571,7 @@ def xenlight_golang_union_to_C(ty =3D None, union_name = =3D '', gotype =3D xenlight_golang_fmt_name(cgotype) =20 field_name =3D xenlight_golang_fmt_name('{0}_union'.format(keyname= )) - s +=3D 'tmp, ok :=3D x.{0}.({1})\n'.format(field_name,gotype) + s +=3D 'tmp, ok :=3D x.{0}.(*{1})\n'.format(field_name,gotype) s +=3D 'if !ok {\n' s +=3D 'return errors.New("wrong type for union key {0}")\n'.forma= t(keyname) s +=3D '}\n' diff --git a/tools/golang/xenlight/helpers.gen.go b/tools/golang/xenlight/h= elpers.gen.go index 5222898fb8..8fc5ec1649 100644 --- a/tools/golang/xenlight/helpers.gen.go +++ b/tools/golang/xenlight/helpers.gen.go @@ -443,7 +443,7 @@ var connectionPty ChannelinfoConnectionUnionPty if err :=3D connectionPty.fromC(xc);err !=3D nil { return fmt.Errorf("converting field connectionPty: %v", err) } -x.ConnectionUnion =3D connectionPty +x.ConnectionUnion =3D &connectionPty case ChannelConnectionSocket: x.ConnectionUnion =3D nil case ChannelConnectionUnknown: @@ -485,7 +485,7 @@ switch x.Connection{ case ChannelConnectionUnknown: break case ChannelConnectionPty: -tmp, ok :=3D x.ConnectionUnion.(ChannelinfoConnectionUnionPty) +tmp, ok :=3D x.ConnectionUnion.(*ChannelinfoConnectionUnionPty) if !ok { return errors.New("wrong type for union key connection") } @@ -1120,7 +1120,7 @@ var typeHvm DomainBuildInfoTypeUnionHvm if err :=3D typeHvm.fromC(xc);err !=3D nil { return fmt.Errorf("converting field typeHvm: %v", err) } -x.TypeUnion =3D typeHvm +x.TypeUnion =3D &typeHvm case DomainTypeInvalid: x.TypeUnion =3D nil case DomainTypePv: @@ -1128,13 +1128,13 @@ var typePv DomainBuildInfoTypeUnionPv if err :=3D typePv.fromC(xc);err !=3D nil { return fmt.Errorf("converting field typePv: %v", err) } -x.TypeUnion =3D typePv +x.TypeUnion =3D &typePv case DomainTypePvh: var typePvh DomainBuildInfoTypeUnionPvh if err :=3D typePvh.fromC(xc);err !=3D nil { return fmt.Errorf("converting field typePvh: %v", err) } -x.TypeUnion =3D typePvh +x.TypeUnion =3D &typePvh default: return fmt.Errorf("invalid union key '%v'", x.Type)} x.ArchArm.GicVersion =3D GicVersion(xc.arch_arm.gic_version) @@ -1465,7 +1465,7 @@ xc.tee =3D C.libxl_tee_type(x.Tee) xc._type =3D C.libxl_domain_type(x.Type) switch x.Type{ case DomainTypeHvm: -tmp, ok :=3D x.TypeUnion.(DomainBuildInfoTypeUnionHvm) +tmp, ok :=3D x.TypeUnion.(*DomainBuildInfoTypeUnionHvm) if !ok { return errors.New("wrong type for union key type") } @@ -1593,7 +1593,7 @@ hvm.mca_caps =3D C.uint64_t(tmp.McaCaps) hvmBytes :=3D C.GoBytes(unsafe.Pointer(&hvm),C.sizeof_libxl_domain_build_i= nfo_type_union_hvm) copy(xc.u[:],hvmBytes) case DomainTypePv: -tmp, ok :=3D x.TypeUnion.(DomainBuildInfoTypeUnionPv) +tmp, ok :=3D x.TypeUnion.(*DomainBuildInfoTypeUnionPv) if !ok { return errors.New("wrong type for union key type") } @@ -1623,7 +1623,7 @@ return fmt.Errorf("converting field E820Host: %v", er= r) pvBytes :=3D C.GoBytes(unsafe.Pointer(&pv),C.sizeof_libxl_domain_build_inf= o_type_union_pv) copy(xc.u[:],pvBytes) case DomainTypePvh: -tmp, ok :=3D x.TypeUnion.(DomainBuildInfoTypeUnionPvh) +tmp, ok :=3D x.TypeUnion.(*DomainBuildInfoTypeUnionPvh) if !ok { return errors.New("wrong type for union key type") } @@ -2283,7 +2283,7 @@ var typeHostdev DeviceUsbdevTypeUnionHostdev if err :=3D typeHostdev.fromC(xc);err !=3D nil { return fmt.Errorf("converting field typeHostdev: %v", err) } -x.TypeUnion =3D typeHostdev +x.TypeUnion =3D &typeHostdev default: return fmt.Errorf("invalid union key '%v'", x.Type)} =20 @@ -2310,7 +2310,7 @@ xc.port =3D C.int(x.Port) xc._type =3D C.libxl_usbdev_type(x.Type) switch x.Type{ case UsbdevTypeHostdev: -tmp, ok :=3D x.TypeUnion.(DeviceUsbdevTypeUnionHostdev) +tmp, ok :=3D x.TypeUnion.(*DeviceUsbdevTypeUnionHostdev) if !ok { return errors.New("wrong type for union key type") } @@ -2508,7 +2508,7 @@ var connectionSocket DeviceChannelConnectionUnionSock= et if err :=3D connectionSocket.fromC(xc);err !=3D nil { return fmt.Errorf("converting field connectionSocket: %v", err) } -x.ConnectionUnion =3D connectionSocket +x.ConnectionUnion =3D &connectionSocket case ChannelConnectionUnknown: x.ConnectionUnion =3D nil default: @@ -2546,7 +2546,7 @@ break case ChannelConnectionPty: break case ChannelConnectionSocket: -tmp, ok :=3D x.ConnectionUnion.(DeviceChannelConnectionUnionSocket) +tmp, ok :=3D x.ConnectionUnion.(*DeviceChannelConnectionUnionSocket) if !ok { return errors.New("wrong type for union key connection") } @@ -4107,7 +4107,7 @@ var typeDiskEject EventTypeUnionDiskEject if err :=3D typeDiskEject.fromC(xc);err !=3D nil { return fmt.Errorf("converting field typeDiskEject: %v", err) } -x.TypeUnion =3D typeDiskEject +x.TypeUnion =3D &typeDiskEject case EventTypeDomainCreateConsoleAvailable: x.TypeUnion =3D nil case EventTypeDomainDeath: @@ -4117,13 +4117,13 @@ var typeDomainShutdown EventTypeUnionDomainShutdown if err :=3D typeDomainShutdown.fromC(xc);err !=3D nil { return fmt.Errorf("converting field typeDomainShutdown: %v", err) } -x.TypeUnion =3D typeDomainShutdown +x.TypeUnion =3D &typeDomainShutdown case EventTypeOperationComplete: var typeOperationComplete EventTypeUnionOperationComplete if err :=3D typeOperationComplete.fromC(xc);err !=3D nil { return fmt.Errorf("converting field typeOperationComplete: %v", err) } -x.TypeUnion =3D typeOperationComplete +x.TypeUnion =3D &typeOperationComplete default: return fmt.Errorf("invalid union key '%v'", x.Type)} =20 @@ -4178,7 +4178,7 @@ xc.for_user =3D C.uint64_t(x.ForUser) xc._type =3D C.libxl_event_type(x.Type) switch x.Type{ case EventTypeDomainShutdown: -tmp, ok :=3D x.TypeUnion.(EventTypeUnionDomainShutdown) +tmp, ok :=3D x.TypeUnion.(*EventTypeUnionDomainShutdown) if !ok { return errors.New("wrong type for union key type") } @@ -4189,7 +4189,7 @@ copy(xc.u[:],domain_shutdownBytes) case EventTypeDomainDeath: break case EventTypeDiskEject: -tmp, ok :=3D x.TypeUnion.(EventTypeUnionDiskEject) +tmp, ok :=3D x.TypeUnion.(*EventTypeUnionDiskEject) if !ok { return errors.New("wrong type for union key type") } @@ -4203,7 +4203,7 @@ return fmt.Errorf("converting field Disk: %v", err) disk_ejectBytes :=3D C.GoBytes(unsafe.Pointer(&disk_eject),C.sizeof_libxl_= event_type_union_disk_eject) copy(xc.u[:],disk_ejectBytes) case EventTypeOperationComplete: -tmp, ok :=3D x.TypeUnion.(EventTypeUnionOperationComplete) +tmp, ok :=3D x.TypeUnion.(*EventTypeUnionOperationComplete) if !ok { return errors.New("wrong type for union key type") } @@ -4278,13 +4278,13 @@ var typeCat PsrHwInfoTypeUnionCat if err :=3D typeCat.fromC(xc);err !=3D nil { return fmt.Errorf("converting field typeCat: %v", err) } -x.TypeUnion =3D typeCat +x.TypeUnion =3D &typeCat case PsrFeatTypeMba: var typeMba PsrHwInfoTypeUnionMba if err :=3D typeMba.fromC(xc);err !=3D nil { return fmt.Errorf("converting field typeMba: %v", err) } -x.TypeUnion =3D typeMba +x.TypeUnion =3D &typeMba default: return fmt.Errorf("invalid union key '%v'", x.Type)} =20 @@ -4323,7 +4323,7 @@ xc.id =3D C.uint32_t(x.Id) xc._type =3D C.libxl_psr_feat_type(x.Type) switch x.Type{ case PsrFeatTypeCat: -tmp, ok :=3D x.TypeUnion.(PsrHwInfoTypeUnionCat) +tmp, ok :=3D x.TypeUnion.(*PsrHwInfoTypeUnionCat) if !ok { return errors.New("wrong type for union key type") } @@ -4334,7 +4334,7 @@ cat.cdp_enabled =3D C.bool(tmp.CdpEnabled) catBytes :=3D C.GoBytes(unsafe.Pointer(&cat),C.sizeof_libxl_psr_hw_info_ty= pe_union_cat) copy(xc.u[:],catBytes) case PsrFeatTypeMba: -tmp, ok :=3D x.TypeUnion.(PsrHwInfoTypeUnionMba) +tmp, ok :=3D x.TypeUnion.(*PsrHwInfoTypeUnionMba) if !ok { return errors.New("wrong type for union key type") } --=20 2.17.1 From nobody Mon May 6 16:59:50 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1621888704; cv=none; d=zohomail.com; s=zohoarc; b=GYAktw+w7ZNdGRGhs4mpjnH1iVaOwXlzh+kpYjysXjRh/LzGt+M3neOfZIJgOL/KY2SG3+5t5uLiOdmlaVrgmpd/Nvy4EEQtCRBmQMtiGOH27wOqfqVDFIE+4T/rhPaVEzKrglJGdTWouFvo2oOtjWbgNfFeAXA2oQXDXhA1DmY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621888704; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=x72Z2VWLOz6ahDBGysPBZw8qVE2KpRZgT2UaiLPYGoc=; b=GWjdb1tBczMpihFzrylZ+bIJz1rN0pD0OVFDsL2p5sUqjdLmmS3jEZf82R1HG28URw2o/VT1NkQc5uuo5JadWOZ98qjXF4hEOmnrTl4ScSbJSLTR8vSHTX//cZIRiCZwoi4xcsGAQLanYOub43tNo6ysrDcEvEEHqpfv6xvUavc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1621888704589147.73288716205946; Mon, 24 May 2021 13:38:24 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.131889.246326 (Exim 4.92) (envelope-from ) id 1llHL1-0004DV-UN; Mon, 24 May 2021 20:38:11 +0000 Received: by outflank-mailman (output) from mailman id 131889.246326; Mon, 24 May 2021 20:38:11 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1llHL1-0004DI-Qf; Mon, 24 May 2021 20:38:11 +0000 Received: by outflank-mailman (input) for mailman id 131889; Mon, 24 May 2021 20:38:10 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1llHL0-0001ey-SK for xen-devel@lists.xenproject.org; Mon, 24 May 2021 20:38:10 +0000 Received: from mail-qt1-x836.google.com (unknown [2607:f8b0:4864:20::836]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 5820f8d2-f153-4cae-a01a-6ee81b2b2caa; Mon, 24 May 2021 20:37:46 +0000 (UTC) Received: by mail-qt1-x836.google.com with SMTP id i19so15076025qtw.9 for ; Mon, 24 May 2021 13:37:46 -0700 (PDT) Received: from localhost.localdomain (c-73-89-138-5.hsd1.vt.comcast.net. [73.89.138.5]) by smtp.gmail.com with ESMTPSA id t25sm5142847qkt.62.2021.05.24.13.37.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 May 2021 13:37:45 -0700 (PDT) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 5820f8d2-f153-4cae-a01a-6ee81b2b2caa DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=x72Z2VWLOz6ahDBGysPBZw8qVE2KpRZgT2UaiLPYGoc=; b=Cw0ZSYaofRCWAfHDy+CfgskUQqQQ06W+8/xlsBgcRaS97XlztjW7YWKa1MHP8gpWoe s59XcFI0Wf7/Bd3r5dI5F9M4vXsX+3AIAZBnJ3tX9TCaEkBe5jVlCTnwvoSovbAwgh8+ DgRUhTLxtgMDzHqmydBsweA1/1sAKzDxzblK8AUg1ikkmcxArOzva2irjDvDYtmb7hks 8J4FZ8IAtooU8ooW1DBRlAnTBabW8MdwmxJfihKNQsn9F7065O+bNgiokjcKeFwYWRt+ nHTE70wZN+gdWcUmFgRsa+vScoPQUCl3y56tL4de3Nvz6ej+h/AeMzuHI2ujREYbFfxC Dwfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=x72Z2VWLOz6ahDBGysPBZw8qVE2KpRZgT2UaiLPYGoc=; b=gE9J4upgLHMMwgQQkZ2kffnuSzlAzJd2NqNOV+tilgM6HQYeOlQ7pflws3R7YSBNIG XGfLMrS00rZVyF96uUKv4hXMIrOX6jE7F4I4/HKFj8KjdiutXJmcCFiVUbSVsDr7mutB OxtN6WA7sVWuLnpu4YYwCmTzqp9HFA9h29q+6yPT8nT+sH2yps85qEGExLWk+yjknsUM X6Wne66GIDbEFUegNzuPUyUop3HFzWPxFb2cUNzhMrihRCsoCnRjVvJIKDT25upm3osa oteFNSWCQVuVbl9R5tqicWTwNmtZpbg/B9kV1pAPX4INS7ZgAq+4I6h0KQK3H0y1Hr6g cNcw== X-Gm-Message-State: AOAM531J55qJS349PPYtw7qjCgZWzSRC9VMboJWZFTeQ1obDaykiQxED 2CTj8fscKjZvnmRNsXF6mEQ= X-Google-Smtp-Source: ABdhPJx6M1UNe75t87tnAzF5iaZq7xIMYUp7nUh2k24anPFVVcKb5qYcyaVrUQLtzGw5fXOK655yFA== X-Received: by 2002:a05:622a:b:: with SMTP id x11mr28993947qtw.272.1621888665927; Mon, 24 May 2021 13:37:45 -0700 (PDT) From: Nick Rosbrook X-Google-Original-From: Nick Rosbrook To: xen-devel@lists.xenproject.prg, xen-devel@lists.xenproject.org Cc: Nick Rosbrook , George Dunlap , Ian Jackson , Wei Liu Subject: [RESEND PATCH 06/12] golang/xenlight: rename Ctx receivers to ctx Date: Mon, 24 May 2021 16:36:47 -0400 Message-Id: X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: References: X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" As a matter of style, it is strange to see capitalized receiver names, due to the significance of capitalized symbols in Go (although there is in fact nothing special about a capitalized receiver name). Fix this in xenlight.go by running: gofmt -w -r 'Ctx -> ctx' xenlight.go from tools/golang/xenlight. There is no functional change. Signed-off-by: Nick Rosbrook Reviewed-by: George Dunlap --- tools/golang/xenlight/xenlight.go | 154 +++++++++++++++--------------- 1 file changed, 77 insertions(+), 77 deletions(-) diff --git a/tools/golang/xenlight/xenlight.go b/tools/golang/xenlight/xenl= ight.go index 13171d0ad1..fc3eb0bf3f 100644 --- a/tools/golang/xenlight/xenlight.go +++ b/tools/golang/xenlight/xenlight.go @@ -203,13 +203,13 @@ type Domid uint32 // NameToDomid does not guarantee that the domid associated with name at // the time NameToDomid is called is the same as the domid associated with // name at the time NameToDomid returns. -func (Ctx *Context) NameToDomid(name string) (Domid, error) { +func (ctx *Context) NameToDomid(name string) (Domid, error) { var domid C.uint32_t =20 cname :=3D C.CString(name) defer C.free(unsafe.Pointer(cname)) =20 - if ret :=3D C.libxl_name_to_domid(Ctx.ctx, cname, &domid); ret !=3D 0 { + if ret :=3D C.libxl_name_to_domid(ctx.ctx, cname, &domid); ret !=3D 0 { return DomidInvalid, Error(ret) } =20 @@ -223,8 +223,8 @@ func (Ctx *Context) NameToDomid(name string) (Domid, er= ror) { // DomidToName does not guarantee that the name (if any) associated with d= omid // at the time DomidToName is called is the same as the name (if any) asso= ciated // with domid at the time DomidToName returns. -func (Ctx *Context) DomidToName(domid Domid) string { - cname :=3D C.libxl_domid_to_name(Ctx.ctx, C.uint32_t(domid)) +func (ctx *Context) DomidToName(domid Domid) string { + cname :=3D C.libxl_domid_to_name(ctx.ctx, C.uint32_t(domid)) defer C.free(unsafe.Pointer(cname)) =20 return C.GoString(cname) @@ -594,10 +594,10 @@ func SchedulerFromString(name string) (s Scheduler, e= rr error) { =20 // libxl_cpupoolinfo * libxl_list_cpupool(libxl_ctx*, int *nb_pool_out); // void libxl_cpupoolinfo_list_free(libxl_cpupoolinfo *list, int nb_pool); -func (Ctx *Context) ListCpupool() (list []Cpupoolinfo) { +func (ctx *Context) ListCpupool() (list []Cpupoolinfo) { var nbPool C.int =20 - c_cpupool_list :=3D C.libxl_list_cpupool(Ctx.ctx, &nbPool) + c_cpupool_list :=3D C.libxl_list_cpupool(ctx.ctx, &nbPool) =20 defer C.libxl_cpupoolinfo_list_free(c_cpupool_list, nbPool) =20 @@ -617,10 +617,10 @@ func (Ctx *Context) ListCpupool() (list []Cpupoolinfo= ) { } =20 // int libxl_cpupool_info(libxl_ctx *ctx, libxl_cpupoolinfo *info, uint32_= t poolid); -func (Ctx *Context) CpupoolInfo(Poolid uint32) (pool Cpupoolinfo, err erro= r) { +func (ctx *Context) CpupoolInfo(Poolid uint32) (pool Cpupoolinfo, err erro= r) { var c_cpupool C.libxl_cpupoolinfo =20 - ret :=3D C.libxl_cpupool_info(Ctx.ctx, &c_cpupool, C.uint32_t(Poolid)) + ret :=3D C.libxl_cpupool_info(ctx.ctx, &c_cpupool, C.uint32_t(Poolid)) if ret !=3D 0 { err =3D Error(-ret) return @@ -638,7 +638,7 @@ func (Ctx *Context) CpupoolInfo(Poolid uint32) (pool Cp= upoolinfo, err error) { // uint32_t *poolid); // FIXME: uuid // FIXME: Setting poolid -func (Ctx *Context) CpupoolCreate(Name string, Scheduler Scheduler, Cpumap= Bitmap) (err error, Poolid uint32) { +func (ctx *Context) CpupoolCreate(Name string, Scheduler Scheduler, Cpumap= Bitmap) (err error, Poolid uint32) { poolid :=3D C.uint32_t(C.LIBXL_CPUPOOL_POOLID_ANY) name :=3D C.CString(Name) defer C.free(unsafe.Pointer(name)) @@ -653,7 +653,7 @@ func (Ctx *Context) CpupoolCreate(Name string, Schedule= r Scheduler, Cpumap Bitma } defer C.libxl_bitmap_dispose(&cbm) =20 - ret :=3D C.libxl_cpupool_create(Ctx.ctx, name, C.libxl_scheduler(Schedule= r), + ret :=3D C.libxl_cpupool_create(ctx.ctx, name, C.libxl_scheduler(Schedule= r), cbm, &uuid, &poolid) if ret !=3D 0 { err =3D Error(-ret) @@ -666,8 +666,8 @@ func (Ctx *Context) CpupoolCreate(Name string, Schedule= r Scheduler, Cpumap Bitma } =20 // int libxl_cpupool_destroy(libxl_ctx *ctx, uint32_t poolid); -func (Ctx *Context) CpupoolDestroy(Poolid uint32) (err error) { - ret :=3D C.libxl_cpupool_destroy(Ctx.ctx, C.uint32_t(Poolid)) +func (ctx *Context) CpupoolDestroy(Poolid uint32) (err error) { + ret :=3D C.libxl_cpupool_destroy(ctx.ctx, C.uint32_t(Poolid)) if ret !=3D 0 { err =3D Error(-ret) return @@ -677,8 +677,8 @@ func (Ctx *Context) CpupoolDestroy(Poolid uint32) (err = error) { } =20 // int libxl_cpupool_cpuadd(libxl_ctx *ctx, uint32_t poolid, int cpu); -func (Ctx *Context) CpupoolCpuadd(Poolid uint32, Cpu int) (err error) { - ret :=3D C.libxl_cpupool_cpuadd(Ctx.ctx, C.uint32_t(Poolid), C.int(Cpu)) +func (ctx *Context) CpupoolCpuadd(Poolid uint32, Cpu int) (err error) { + ret :=3D C.libxl_cpupool_cpuadd(ctx.ctx, C.uint32_t(Poolid), C.int(Cpu)) if ret !=3D 0 { err =3D Error(-ret) return @@ -689,14 +689,14 @@ func (Ctx *Context) CpupoolCpuadd(Poolid uint32, Cpu = int) (err error) { =20 // int libxl_cpupool_cpuadd_cpumap(libxl_ctx *ctx, uint32_t poolid, // const libxl_bitmap *cpumap); -func (Ctx *Context) CpupoolCpuaddCpumap(Poolid uint32, Cpumap Bitmap) (err= error) { +func (ctx *Context) CpupoolCpuaddCpumap(Poolid uint32, Cpumap Bitmap) (err= error) { var cbm C.libxl_bitmap if err =3D Cpumap.toC(&cbm); err !=3D nil { return } defer C.libxl_bitmap_dispose(&cbm) =20 - ret :=3D C.libxl_cpupool_cpuadd_cpumap(Ctx.ctx, C.uint32_t(Poolid), &cbm) + ret :=3D C.libxl_cpupool_cpuadd_cpumap(ctx.ctx, C.uint32_t(Poolid), &cbm) if ret !=3D 0 { err =3D Error(-ret) return @@ -706,8 +706,8 @@ func (Ctx *Context) CpupoolCpuaddCpumap(Poolid uint32, = Cpumap Bitmap) (err error } =20 // int libxl_cpupool_cpuremove(libxl_ctx *ctx, uint32_t poolid, int cpu); -func (Ctx *Context) CpupoolCpuremove(Poolid uint32, Cpu int) (err error) { - ret :=3D C.libxl_cpupool_cpuremove(Ctx.ctx, C.uint32_t(Poolid), C.int(Cpu= )) +func (ctx *Context) CpupoolCpuremove(Poolid uint32, Cpu int) (err error) { + ret :=3D C.libxl_cpupool_cpuremove(ctx.ctx, C.uint32_t(Poolid), C.int(Cpu= )) if ret !=3D 0 { err =3D Error(-ret) return @@ -718,14 +718,14 @@ func (Ctx *Context) CpupoolCpuremove(Poolid uint32, C= pu int) (err error) { =20 // int libxl_cpupool_cpuremove_cpumap(libxl_ctx *ctx, uint32_t poolid, // const libxl_bitmap *cpumap); -func (Ctx *Context) CpupoolCpuremoveCpumap(Poolid uint32, Cpumap Bitmap) (= err error) { +func (ctx *Context) CpupoolCpuremoveCpumap(Poolid uint32, Cpumap Bitmap) (= err error) { var cbm C.libxl_bitmap if err =3D Cpumap.toC(&cbm); err !=3D nil { return } defer C.libxl_bitmap_dispose(&cbm) =20 - ret :=3D C.libxl_cpupool_cpuremove_cpumap(Ctx.ctx, C.uint32_t(Poolid), &c= bm) + ret :=3D C.libxl_cpupool_cpuremove_cpumap(ctx.ctx, C.uint32_t(Poolid), &c= bm) if ret !=3D 0 { err =3D Error(-ret) return @@ -735,11 +735,11 @@ func (Ctx *Context) CpupoolCpuremoveCpumap(Poolid uin= t32, Cpumap Bitmap) (err er } =20 // int libxl_cpupool_rename(libxl_ctx *ctx, const char *name, uint32_t poo= lid); -func (Ctx *Context) CpupoolRename(Name string, Poolid uint32) (err error) { +func (ctx *Context) CpupoolRename(Name string, Poolid uint32) (err error) { name :=3D C.CString(Name) defer C.free(unsafe.Pointer(name)) =20 - ret :=3D C.libxl_cpupool_rename(Ctx.ctx, name, C.uint32_t(Poolid)) + ret :=3D C.libxl_cpupool_rename(ctx.ctx, name, C.uint32_t(Poolid)) if ret !=3D 0 { err =3D Error(-ret) return @@ -749,10 +749,10 @@ func (Ctx *Context) CpupoolRename(Name string, Poolid= uint32) (err error) { } =20 // int libxl_cpupool_cpuadd_node(libxl_ctx *ctx, uint32_t poolid, int node= , int *cpus); -func (Ctx *Context) CpupoolCpuaddNode(Poolid uint32, Node int) (Cpus int, = err error) { +func (ctx *Context) CpupoolCpuaddNode(Poolid uint32, Node int) (Cpus int, = err error) { ccpus :=3D C.int(0) =20 - ret :=3D C.libxl_cpupool_cpuadd_node(Ctx.ctx, C.uint32_t(Poolid), C.int(N= ode), &ccpus) + ret :=3D C.libxl_cpupool_cpuadd_node(ctx.ctx, C.uint32_t(Poolid), C.int(N= ode), &ccpus) if ret !=3D 0 { err =3D Error(-ret) return @@ -764,10 +764,10 @@ func (Ctx *Context) CpupoolCpuaddNode(Poolid uint32, = Node int) (Cpus int, err er } =20 // int libxl_cpupool_cpuremove_node(libxl_ctx *ctx, uint32_t poolid, int n= ode, int *cpus); -func (Ctx *Context) CpupoolCpuremoveNode(Poolid uint32, Node int) (Cpus in= t, err error) { +func (ctx *Context) CpupoolCpuremoveNode(Poolid uint32, Node int) (Cpus in= t, err error) { ccpus :=3D C.int(0) =20 - ret :=3D C.libxl_cpupool_cpuremove_node(Ctx.ctx, C.uint32_t(Poolid), C.in= t(Node), &ccpus) + ret :=3D C.libxl_cpupool_cpuremove_node(ctx.ctx, C.uint32_t(Poolid), C.in= t(Node), &ccpus) if ret !=3D 0 { err =3D Error(-ret) return @@ -779,8 +779,8 @@ func (Ctx *Context) CpupoolCpuremoveNode(Poolid uint32,= Node int) (Cpus int, err } =20 // int libxl_cpupool_movedomain(libxl_ctx *ctx, uint32_t poolid, uint32_t = domid); -func (Ctx *Context) CpupoolMovedomain(Poolid uint32, Id Domid) (err error)= { - ret :=3D C.libxl_cpupool_movedomain(Ctx.ctx, C.uint32_t(Poolid), C.uint32= _t(Id)) +func (ctx *Context) CpupoolMovedomain(Poolid uint32, Id Domid) (err error)= { + ret :=3D C.libxl_cpupool_movedomain(ctx.ctx, C.uint32_t(Poolid), C.uint32= _t(Id)) if ret !=3D 0 { err =3D Error(-ret) return @@ -792,8 +792,8 @@ func (Ctx *Context) CpupoolMovedomain(Poolid uint32, Id= Domid) (err error) { // // Utility functions // -func (Ctx *Context) CpupoolFindByName(name string) (info Cpupoolinfo, foun= d bool) { - plist :=3D Ctx.ListCpupool() +func (ctx *Context) CpupoolFindByName(name string) (info Cpupoolinfo, foun= d bool) { + plist :=3D ctx.ListCpupool() =20 for i :=3D range plist { if plist[i].PoolName =3D=3D name { @@ -805,14 +805,14 @@ func (Ctx *Context) CpupoolFindByName(name string) (i= nfo Cpupoolinfo, found bool return } =20 -func (Ctx *Context) CpupoolMakeFree(Cpumap Bitmap) (err error) { - plist :=3D Ctx.ListCpupool() +func (ctx *Context) CpupoolMakeFree(Cpumap Bitmap) (err error) { + plist :=3D ctx.ListCpupool() =20 for i :=3D range plist { var Intersection Bitmap Intersection =3D Cpumap.And(plist[i].Cpumap) if !Intersection.IsEmpty() { - err =3D Ctx.CpupoolCpuremoveCpumap(plist[i].Poolid, Intersection) + err =3D ctx.CpupoolCpuremoveCpumap(plist[i].Poolid, Intersection) if err !=3D nil { return } @@ -940,8 +940,8 @@ func (bm Bitmap) String() (s string) { } =20 //int libxl_get_max_cpus(libxl_ctx *ctx); -func (Ctx *Context) GetMaxCpus() (maxCpus int, err error) { - ret :=3D C.libxl_get_max_cpus(Ctx.ctx) +func (ctx *Context) GetMaxCpus() (maxCpus int, err error) { + ret :=3D C.libxl_get_max_cpus(ctx.ctx) if ret < 0 { err =3D Error(-ret) return @@ -951,8 +951,8 @@ func (Ctx *Context) GetMaxCpus() (maxCpus int, err erro= r) { } =20 //int libxl_get_online_cpus(libxl_ctx *ctx); -func (Ctx *Context) GetOnlineCpus() (onCpus int, err error) { - ret :=3D C.libxl_get_online_cpus(Ctx.ctx) +func (ctx *Context) GetOnlineCpus() (onCpus int, err error) { + ret :=3D C.libxl_get_online_cpus(ctx.ctx) if ret < 0 { err =3D Error(-ret) return @@ -962,8 +962,8 @@ func (Ctx *Context) GetOnlineCpus() (onCpus int, err er= ror) { } =20 //int libxl_get_max_nodes(libxl_ctx *ctx); -func (Ctx *Context) GetMaxNodes() (maxNodes int, err error) { - ret :=3D C.libxl_get_max_nodes(Ctx.ctx) +func (ctx *Context) GetMaxNodes() (maxNodes int, err error) { + ret :=3D C.libxl_get_max_nodes(ctx.ctx) if ret < 0 { err =3D Error(-ret) return @@ -973,9 +973,9 @@ func (Ctx *Context) GetMaxNodes() (maxNodes int, err er= ror) { } =20 //int libxl_get_free_memory(libxl_ctx *ctx, uint64_t *memkb); -func (Ctx *Context) GetFreeMemory() (memkb uint64, err error) { +func (ctx *Context) GetFreeMemory() (memkb uint64, err error) { var cmem C.uint64_t - ret :=3D C.libxl_get_free_memory(Ctx.ctx, &cmem) + ret :=3D C.libxl_get_free_memory(ctx.ctx, &cmem) =20 if ret < 0 { err =3D Error(-ret) @@ -988,12 +988,12 @@ func (Ctx *Context) GetFreeMemory() (memkb uint64, er= r error) { } =20 //int libxl_get_physinfo(libxl_ctx *ctx, libxl_physinfo *physinfo) -func (Ctx *Context) GetPhysinfo() (physinfo *Physinfo, err error) { +func (ctx *Context) GetPhysinfo() (physinfo *Physinfo, err error) { var cphys C.libxl_physinfo C.libxl_physinfo_init(&cphys) defer C.libxl_physinfo_dispose(&cphys) =20 - ret :=3D C.libxl_get_physinfo(Ctx.ctx, &cphys) + ret :=3D C.libxl_get_physinfo(ctx.ctx, &cphys) =20 if ret < 0 { err =3D Error(ret) @@ -1005,22 +1005,22 @@ func (Ctx *Context) GetPhysinfo() (physinfo *Physin= fo, err error) { } =20 //const libxl_version_info* libxl_get_version_info(libxl_ctx *ctx); -func (Ctx *Context) GetVersionInfo() (info *VersionInfo, err error) { +func (ctx *Context) GetVersionInfo() (info *VersionInfo, err error) { var cinfo *C.libxl_version_info =20 - cinfo =3D C.libxl_get_version_info(Ctx.ctx) + cinfo =3D C.libxl_get_version_info(ctx.ctx) =20 err =3D info.fromC(cinfo) =20 return } =20 -func (Ctx *Context) DomainInfo(Id Domid) (di *Dominfo, err error) { +func (ctx *Context) DomainInfo(Id Domid) (di *Dominfo, err error) { var cdi C.libxl_dominfo C.libxl_dominfo_init(&cdi) defer C.libxl_dominfo_dispose(&cdi) =20 - ret :=3D C.libxl_domain_info(Ctx.ctx, &cdi, C.uint32_t(Id)) + ret :=3D C.libxl_domain_info(ctx.ctx, &cdi, C.uint32_t(Id)) =20 if ret !=3D 0 { err =3D Error(-ret) @@ -1032,8 +1032,8 @@ func (Ctx *Context) DomainInfo(Id Domid) (di *Dominfo= , err error) { return } =20 -func (Ctx *Context) DomainUnpause(Id Domid) (err error) { - ret :=3D C.libxl_domain_unpause(Ctx.ctx, C.uint32_t(Id), nil) +func (ctx *Context) DomainUnpause(Id Domid) (err error) { + ret :=3D C.libxl_domain_unpause(ctx.ctx, C.uint32_t(Id), nil) =20 if ret !=3D 0 { err =3D Error(-ret) @@ -1042,8 +1042,8 @@ func (Ctx *Context) DomainUnpause(Id Domid) (err erro= r) { } =20 //int libxl_domain_pause(libxl_ctx *ctx, uint32_t domain); -func (Ctx *Context) DomainPause(id Domid) (err error) { - ret :=3D C.libxl_domain_pause(Ctx.ctx, C.uint32_t(id), nil) +func (ctx *Context) DomainPause(id Domid) (err error) { + ret :=3D C.libxl_domain_pause(ctx.ctx, C.uint32_t(id), nil) =20 if ret !=3D 0 { err =3D Error(-ret) @@ -1052,8 +1052,8 @@ func (Ctx *Context) DomainPause(id Domid) (err error)= { } =20 //int libxl_domain_shutdown(libxl_ctx *ctx, uint32_t domid); -func (Ctx *Context) DomainShutdown(id Domid) (err error) { - ret :=3D C.libxl_domain_shutdown(Ctx.ctx, C.uint32_t(id), nil) +func (ctx *Context) DomainShutdown(id Domid) (err error) { + ret :=3D C.libxl_domain_shutdown(ctx.ctx, C.uint32_t(id), nil) =20 if ret !=3D 0 { err =3D Error(-ret) @@ -1062,8 +1062,8 @@ func (Ctx *Context) DomainShutdown(id Domid) (err err= or) { } =20 //int libxl_domain_reboot(libxl_ctx *ctx, uint32_t domid); -func (Ctx *Context) DomainReboot(id Domid) (err error) { - ret :=3D C.libxl_domain_reboot(Ctx.ctx, C.uint32_t(id), nil) +func (ctx *Context) DomainReboot(id Domid) (err error) { + ret :=3D C.libxl_domain_reboot(ctx.ctx, C.uint32_t(id), nil) =20 if ret !=3D 0 { err =3D Error(-ret) @@ -1073,9 +1073,9 @@ func (Ctx *Context) DomainReboot(id Domid) (err error= ) { =20 //libxl_dominfo * libxl_list_domain(libxl_ctx*, int *nb_domain_out); //void libxl_dominfo_list_free(libxl_dominfo *list, int nb_domain); -func (Ctx *Context) ListDomain() (glist []Dominfo) { +func (ctx *Context) ListDomain() (glist []Dominfo) { var nbDomain C.int - clist :=3D C.libxl_list_domain(Ctx.ctx, &nbDomain) + clist :=3D C.libxl_list_domain(ctx.ctx, &nbDomain) defer C.libxl_dominfo_list_free(clist, nbDomain) =20 if int(nbDomain) =3D=3D 0 { @@ -1095,11 +1095,11 @@ func (Ctx *Context) ListDomain() (glist []Dominfo) { //libxl_vcpuinfo *libxl_list_vcpu(libxl_ctx *ctx, uint32_t domid, // int *nb_vcpu, int *nr_cpus_out); //void libxl_vcpuinfo_list_free(libxl_vcpuinfo *, int nr_vcpus); -func (Ctx *Context) ListVcpu(id Domid) (glist []Vcpuinfo) { +func (ctx *Context) ListVcpu(id Domid) (glist []Vcpuinfo) { var nbVcpu C.int var nrCpu C.int =20 - clist :=3D C.libxl_list_vcpu(Ctx.ctx, C.uint32_t(id), &nbVcpu, &nrCpu) + clist :=3D C.libxl_list_vcpu(ctx.ctx, C.uint32_t(id), &nbVcpu, &nrCpu) defer C.libxl_vcpuinfo_list_free(clist, nbVcpu) =20 if int(nbVcpu) =3D=3D 0 { @@ -1125,9 +1125,9 @@ func (ct ConsoleType) String() (str string) { =20 //int libxl_console_get_tty(libxl_ctx *ctx, uint32_t domid, int cons_num, //libxl_console_type type, char **path); -func (Ctx *Context) ConsoleGetTty(id Domid, consNum int, conType ConsoleTy= pe) (path string, err error) { +func (ctx *Context) ConsoleGetTty(id Domid, consNum int, conType ConsoleTy= pe) (path string, err error) { var cpath *C.char - ret :=3D C.libxl_console_get_tty(Ctx.ctx, C.uint32_t(id), C.int(consNum),= C.libxl_console_type(conType), &cpath) + ret :=3D C.libxl_console_get_tty(ctx.ctx, C.uint32_t(id), C.int(consNum),= C.libxl_console_type(conType), &cpath) if ret !=3D 0 { err =3D Error(-ret) return @@ -1140,9 +1140,9 @@ func (Ctx *Context) ConsoleGetTty(id Domid, consNum i= nt, conType ConsoleType) (p =20 //int libxl_primary_console_get_tty(libxl_ctx *ctx, uint32_t domid_vm, // char **path); -func (Ctx *Context) PrimaryConsoleGetTty(domid uint32) (path string, err e= rror) { +func (ctx *Context) PrimaryConsoleGetTty(domid uint32) (path string, err e= rror) { var cpath *C.char - ret :=3D C.libxl_primary_console_get_tty(Ctx.ctx, C.uint32_t(domid), &cpa= th) + ret :=3D C.libxl_primary_console_get_tty(ctx.ctx, C.uint32_t(domid), &cpa= th) if ret !=3D 0 { err =3D Error(-ret) return @@ -1154,7 +1154,7 @@ func (Ctx *Context) PrimaryConsoleGetTty(domid uint32= ) (path string, err error) } =20 // DeviceNicAdd adds a nic to a domain. -func (Ctx *Context) DeviceNicAdd(domid Domid, nic *DeviceNic) error { +func (ctx *Context) DeviceNicAdd(domid Domid, nic *DeviceNic) error { var cnic C.libxl_device_nic =20 if err :=3D nic.toC(&cnic); err !=3D nil { @@ -1162,7 +1162,7 @@ func (Ctx *Context) DeviceNicAdd(domid Domid, nic *De= viceNic) error { } defer C.libxl_device_nic_dispose(&cnic) =20 - ret :=3D C.libxl_device_nic_add(Ctx.ctx, C.uint32_t(domid), &cnic, nil) + ret :=3D C.libxl_device_nic_add(ctx.ctx, C.uint32_t(domid), &cnic, nil) if ret !=3D 0 { return Error(ret) } @@ -1171,7 +1171,7 @@ func (Ctx *Context) DeviceNicAdd(domid Domid, nic *De= viceNic) error { } =20 // DeviceNicRemove removes a nic from a domain. -func (Ctx *Context) DeviceNicRemove(domid Domid, nic *DeviceNic) error { +func (ctx *Context) DeviceNicRemove(domid Domid, nic *DeviceNic) error { var cnic C.libxl_device_nic =20 if err :=3D nic.toC(&cnic); err !=3D nil { @@ -1179,7 +1179,7 @@ func (Ctx *Context) DeviceNicRemove(domid Domid, nic = *DeviceNic) error { } defer C.libxl_device_nic_dispose(&cnic) =20 - ret :=3D C.libxl_device_nic_remove(Ctx.ctx, C.uint32_t(domid), &cnic, nil) + ret :=3D C.libxl_device_nic_remove(ctx.ctx, C.uint32_t(domid), &cnic, nil) if ret !=3D 0 { return Error(ret) } @@ -1188,7 +1188,7 @@ func (Ctx *Context) DeviceNicRemove(domid Domid, nic = *DeviceNic) error { } =20 // DevicePciAdd is used to passthrough a PCI device to a domain. -func (Ctx *Context) DevicePciAdd(domid Domid, pci *DevicePci) error { +func (ctx *Context) DevicePciAdd(domid Domid, pci *DevicePci) error { var cpci C.libxl_device_pci =20 if err :=3D pci.toC(&cpci); err !=3D nil { @@ -1196,7 +1196,7 @@ func (Ctx *Context) DevicePciAdd(domid Domid, pci *De= vicePci) error { } defer C.libxl_device_pci_dispose(&cpci) =20 - ret :=3D C.libxl_device_pci_add(Ctx.ctx, C.uint32_t(domid), &cpci, nil) + ret :=3D C.libxl_device_pci_add(ctx.ctx, C.uint32_t(domid), &cpci, nil) if ret !=3D 0 { return Error(ret) } @@ -1205,7 +1205,7 @@ func (Ctx *Context) DevicePciAdd(domid Domid, pci *De= vicePci) error { } =20 // DevicePciRemove removes a PCI device from a domain. -func (Ctx *Context) DevicePciRemove(domid Domid, pci *DevicePci) error { +func (ctx *Context) DevicePciRemove(domid Domid, pci *DevicePci) error { var cpci C.libxl_device_pci =20 if err :=3D pci.toC(&cpci); err !=3D nil { @@ -1213,7 +1213,7 @@ func (Ctx *Context) DevicePciRemove(domid Domid, pci = *DevicePci) error { } defer C.libxl_device_pci_dispose(&cpci) =20 - ret :=3D C.libxl_device_pci_remove(Ctx.ctx, C.uint32_t(domid), &cpci, nil) + ret :=3D C.libxl_device_pci_remove(ctx.ctx, C.uint32_t(domid), &cpci, nil) if ret !=3D 0 { return Error(ret) } @@ -1222,7 +1222,7 @@ func (Ctx *Context) DevicePciRemove(domid Domid, pci = *DevicePci) error { } =20 // DeviceUsbdevAdd adds a USB device to a domain. -func (Ctx *Context) DeviceUsbdevAdd(domid Domid, usbdev *DeviceUsbdev) err= or { +func (ctx *Context) DeviceUsbdevAdd(domid Domid, usbdev *DeviceUsbdev) err= or { var cusbdev C.libxl_device_usbdev =20 if err :=3D usbdev.toC(&cusbdev); err !=3D nil { @@ -1230,7 +1230,7 @@ func (Ctx *Context) DeviceUsbdevAdd(domid Domid, usbd= ev *DeviceUsbdev) error { } defer C.libxl_device_usbdev_dispose(&cusbdev) =20 - ret :=3D C.libxl_device_usbdev_add(Ctx.ctx, C.uint32_t(domid), &cusbdev, = nil) + ret :=3D C.libxl_device_usbdev_add(ctx.ctx, C.uint32_t(domid), &cusbdev, = nil) if ret !=3D 0 { return Error(ret) } @@ -1239,7 +1239,7 @@ func (Ctx *Context) DeviceUsbdevAdd(domid Domid, usbd= ev *DeviceUsbdev) error { } =20 // DeviceUsbdevRemove removes a USB device from a domain. -func (Ctx *Context) DeviceUsbdevRemove(domid Domid, usbdev *DeviceUsbdev) = error { +func (ctx *Context) DeviceUsbdevRemove(domid Domid, usbdev *DeviceUsbdev) = error { var cusbdev C.libxl_device_usbdev =20 if err :=3D usbdev.toC(&cusbdev); err !=3D nil { @@ -1247,7 +1247,7 @@ func (Ctx *Context) DeviceUsbdevRemove(domid Domid, u= sbdev *DeviceUsbdev) error } defer C.libxl_device_usbdev_dispose(&cusbdev) =20 - ret :=3D C.libxl_device_usbdev_remove(Ctx.ctx, C.uint32_t(domid), &cusbde= v, nil) + ret :=3D C.libxl_device_usbdev_remove(ctx.ctx, C.uint32_t(domid), &cusbde= v, nil) if ret !=3D 0 { return Error(ret) } @@ -1256,7 +1256,7 @@ func (Ctx *Context) DeviceUsbdevRemove(domid Domid, u= sbdev *DeviceUsbdev) error } =20 // DomainCreateNew creates a new domain. -func (Ctx *Context) DomainCreateNew(config *DomainConfig) (Domid, error) { +func (ctx *Context) DomainCreateNew(config *DomainConfig) (Domid, error) { var cdomid C.uint32_t var cconfig C.libxl_domain_config err :=3D config.toC(&cconfig) @@ -1265,7 +1265,7 @@ func (Ctx *Context) DomainCreateNew(config *DomainCon= fig) (Domid, error) { } defer C.libxl_domain_config_dispose(&cconfig) =20 - ret :=3D C.libxl_domain_create_new(Ctx.ctx, &cconfig, &cdomid, nil, nil) + ret :=3D C.libxl_domain_create_new(ctx.ctx, &cconfig, &cdomid, nil, nil) if ret !=3D 0 { return Domid(0), Error(ret) } --=20 2.17.1 From nobody Mon May 6 16:59:50 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1621888709; cv=none; d=zohomail.com; s=zohoarc; b=euna1BKw4QPZbjIm4Tt2rsi+O9q0JkIMjh8SV+og3tILJw9jBJLr9qhObT3qd33tScETav9id2eEWgR1HG6WCmpQXm7M8cfD1Rlq4HDYNTGilTsw7Ob9askqLgI6F7L4CvRde8fMi62ArL7GsfEACb0zM2KcW2VOjTWeFXCiYxU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621888709; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=9uXGDDpJ9CrrbQAMDJkXAgE2yF4sZn3Mfqg0mD2vt8w=; b=aCeC29cXRPNIy8KJhUENErImgbiViEG8bFI/wnVY56Oa/uDFcXpNnqsJOOWz0SIidqdRZMo3BexGrenSYKaq6N0Q5ChlrHkIgKHhvYlQ+i9DPELK8ezrpU9+a2lavo7GCgU+BORUiUYpHv0acQvfwAJ+8GDR/g30Bt9SQp4AYv0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1621888709034285.92847016731776; Mon, 24 May 2021 13:38:29 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.131891.246337 (Exim 4.92) (envelope-from ) id 1llHL7-0004uO-Fv; Mon, 24 May 2021 20:38:17 +0000 Received: by outflank-mailman (output) from mailman id 131891.246337; Mon, 24 May 2021 20:38:17 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1llHL7-0004uF-Ag; Mon, 24 May 2021 20:38:17 +0000 Received: by outflank-mailman (input) for mailman id 131891; Mon, 24 May 2021 20:38:15 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1llHL5-0001ey-SW for xen-devel@lists.xenproject.org; Mon, 24 May 2021 20:38:15 +0000 Received: from mail-qt1-x829.google.com (unknown [2607:f8b0:4864:20::829]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id b97bdf1b-26ce-4ef3-95a2-ccf3d493893c; Mon, 24 May 2021 20:37:47 +0000 (UTC) Received: by mail-qt1-x829.google.com with SMTP id v4so21607714qtp.1 for ; Mon, 24 May 2021 13:37:47 -0700 (PDT) Received: from localhost.localdomain (c-73-89-138-5.hsd1.vt.comcast.net. [73.89.138.5]) by smtp.gmail.com with ESMTPSA id t25sm5142847qkt.62.2021.05.24.13.37.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 May 2021 13:37:46 -0700 (PDT) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: b97bdf1b-26ce-4ef3-95a2-ccf3d493893c DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=9uXGDDpJ9CrrbQAMDJkXAgE2yF4sZn3Mfqg0mD2vt8w=; b=f+S1418ZVs4jNRq5JPcL3ZkKr/yrsAXbaZwrixfKE08F34Gf8M/kgrpE7MYUQNXeHS ZaMzEcsPVNwNb7usCAXyuhZlRRZNHXm8GLPSjDGo972/srrl+LbxcsZPSpE4dw2ZSbfq LsYRd4puWnoPH91/1WqxJqLr30HAO1osjX/By9pN8+930wD+DQu42h7hYkPZTptitofh xFTNoeDxfCZOZtdSy3PUxfd+eHU9ZaOQZwt6rpIsNtdjVZgEa7eLc0ufQ5Tg8Kp+gJsf O2OWXYtKDvkLzM2raQjQUkIZ1avB2+ywbnj7CctVWQi9OKHkSObtBF0m6U6pE5AANhez zcvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=9uXGDDpJ9CrrbQAMDJkXAgE2yF4sZn3Mfqg0mD2vt8w=; b=NoJswnTlHHrxzCY3fiqm5Dz7THX2Vz+ylN8Bv+5o3xKjaTmcZ5kqfeUt78FIg1Hefj /mt1zsF395aZ52XunnoSn9garPjS27uI+jTXJFJnYTRB233NpmRQdl/Q6ycJQP1NMAol BMhIxu9E5UzUjPH8wG3Ea72EM4KjWG4ClRxj8DC6i9OGd3tzyVYp4UtN4+QBOnQdM4yk jPh+V7A3509KUHSGwrV2H2qKuVIb1v3cFevC1HyF+sAVXrq8gx63cJMw0VRjRikRhujr Wgf4mzblP/bKL7+fqzWF4fZ2ROPOJLJXHg2jdAygjIOgAph6QWamdBsjJc7LrVf9VXAa yroQ== X-Gm-Message-State: AOAM530O3y6OwdP3X/mI2D+f+e3bxzYOt9kE9ONYXruy/LAAwyGz/YyU bwoYwsz6liaMH9MgNqGSNq8= X-Google-Smtp-Source: ABdhPJz32pZMzPFi766pOO+4M3WoRNhbgUGhqo72JUmiexqunSwH+GtFEWRIQDP9xPyXbh3tDHoj6g== X-Received: by 2002:ac8:7e93:: with SMTP id w19mr27948061qtj.314.1621888666941; Mon, 24 May 2021 13:37:46 -0700 (PDT) From: Nick Rosbrook X-Google-Original-From: Nick Rosbrook To: xen-devel@lists.xenproject.prg, xen-devel@lists.xenproject.org Cc: Nick Rosbrook , George Dunlap , Ian Jackson , Wei Liu Subject: [RESEND PATCH 07/12] golang/xenlight: add logging conveniences for within xenlight Date: Mon, 24 May 2021 16:36:48 -0400 Message-Id: <452aac2489990ac0195c62d8cb820fbe5786c466.1621887506.git.rosbrookn@ainfosec.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: References: X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Add some logging methods to Context to provide easy use of the Contenxt's xentoollog_logger. These are not exported, but the LogLevel type is so that a later commit can allow the Context's log level to be configurable. Becuase cgo does not support calling C functions with variable arguments, e.g. xtl_log, add an xtl_log_wrap function to the cgo preamble that accepts an already formatted string, and handle the formatting in Go. Signed-off-by: Nick Rosbrook --- tools/golang/xenlight/xenlight.go | 45 +++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/tools/golang/xenlight/xenlight.go b/tools/golang/xenlight/xenl= ight.go index fc3eb0bf3f..f68d7b6e97 100644 --- a/tools/golang/xenlight/xenlight.go +++ b/tools/golang/xenlight/xenlight.go @@ -32,6 +32,15 @@ static const libxl_childproc_hooks childproc_hooks =3D {= .chldowner =3D libxl_sigchl void xenlight_set_chldproc(libxl_ctx *ctx) { libxl_childproc_setmode(ctx, &childproc_hooks, NULL); } + +void xtl_log_wrap(struct xentoollog_logger *logger, + xentoollog_level level, + int errnoval, + const char *context, + const char *msg) +{ + xtl_log(logger, level, errnoval, context, "%s", msg); +} */ import "C" =20 @@ -192,6 +201,42 @@ func (ctx *Context) Close() error { return nil } =20 +// LogLevel represents an xentoollog_level, and can be used to configre th= e log +// level of a Context's logger. +type LogLevel int + +const ( + //LogLevelNone LogLevel =3D C.XTL_NONE + LogLevelDebug LogLevel =3D C.XTL_DEBUG + LogLevelVerbose LogLevel =3D C.XTL_VERBOSE + LogLevelDetail LogLevel =3D C.XTL_DETAIL + LogLevelProgress LogLevel =3D C.XTL_PROGRESS + LogLevelInfo LogLevel =3D C.XTL_INFO + LogLevelNotice LogLevel =3D C.XTL_NOTICE + LogLevelWarn LogLevel =3D C.XTL_WARN + LogLevelError LogLevel =3D C.XTL_ERROR + LogLevelCritical LogLevel =3D C.XTL_CRITICAL + //LogLevelNumLevels LogLevel =3D C.XTL_NUM_LEVELS +) + +func (ctx *Context) log(lvl LogLevel, errnoval int, format string, a ...in= terface{}) { + msg :=3D C.CString(fmt.Sprintf(format, a...)) + defer C.free(unsafe.Pointer(msg)) + context :=3D C.CString("xenlight") + defer C.free(unsafe.Pointer(context)) + + C.xtl_log_wrap((*C.xentoollog_logger)(unsafe.Pointer(ctx.logger)), + C.xentoollog_level(lvl), C.int(errnoval), context, msg) +} + +func (ctx *Context) logd(format string, a ...interface{}) { + ctx.log(LogLevelDebug, -1, format, a...) +} + +func (ctx *Context) logw(format string, a ...interface{}) { + ctx.log(LogLevelWarn, -1, format, a...) +} + /* * Types: Builtins */ --=20 2.17.1 From nobody Mon May 6 16:59:50 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1621888713; cv=none; d=zohomail.com; s=zohoarc; b=bf+m0qmtQYaCvA818E66E88MBKyFnxAGyEfWtkijc9H5koSDbH+0rhDmzazei5FZrFEdzkrV6ZUrS8jf8RyRAmCyHrcja8QeLNcqC3eJM1rwMWLFY2NNFQbvNXh3PfabeS6xJIOU8PeDOUgxyrzSf0NunbWjJTp8heIvK5ClSG8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621888713; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=kEyMtRkVLFS8i1iO7mYtPK1CFn3AKiqVnXMVPcMO4BI=; b=HTJoo+hg03M1wO2CDKTH0sAuKqVb3i3gbdSk5UUKtOEEDkiad1LfDLZfAAIjT5DHOsoFwiynjlLqHwndin1UAtmdddqHf2/Bmy8EuUttM15M2l2mAxgE2qCyCkw87HQ4rM42nwjk/U18W3xVrCKnV2wyazxKWOrud11bkczOEyY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1621888713411170.61978828315262; Mon, 24 May 2021 13:38:33 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.131897.246348 (Exim 4.92) (envelope-from ) id 1llHLC-0005XE-PT; Mon, 24 May 2021 20:38:22 +0000 Received: by outflank-mailman (output) from mailman id 131897.246348; Mon, 24 May 2021 20:38:22 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1llHLC-0005X5-LU; Mon, 24 May 2021 20:38:22 +0000 Received: by outflank-mailman (input) for mailman id 131897; Mon, 24 May 2021 20:38:20 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1llHLA-0001ey-Sp for xen-devel@lists.xenproject.org; Mon, 24 May 2021 20:38:20 +0000 Received: from mail-qv1-xf33.google.com (unknown [2607:f8b0:4864:20::f33]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 350ac5e6-6dfb-4f62-a383-343ea6a0b2f6; Mon, 24 May 2021 20:37:48 +0000 (UTC) Received: by mail-qv1-xf33.google.com with SMTP id c13so13706066qvx.5 for ; Mon, 24 May 2021 13:37:48 -0700 (PDT) Received: from localhost.localdomain (c-73-89-138-5.hsd1.vt.comcast.net. [73.89.138.5]) by smtp.gmail.com with ESMTPSA id t25sm5142847qkt.62.2021.05.24.13.37.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 May 2021 13:37:47 -0700 (PDT) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 350ac5e6-6dfb-4f62-a383-343ea6a0b2f6 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=kEyMtRkVLFS8i1iO7mYtPK1CFn3AKiqVnXMVPcMO4BI=; b=Vrt/ol88f+vhW1GfAucOx70Qu+yZwIoMcbshMwrLnzRMhAgYMMK/Lv46VGXZpfqnP1 5bS1YfA5QIfmt94DA8U5eGKapbh6dVmPmRpJ9eqltYO+zTibgImd5DT+d9ZbMSx15xhR wnQu8yiv2m1DoMGoNFRdoyqDyzVMtjDZr7ChQ3I6WsBoEnhjgCnzEvK2F8zvi+lOPZ83 W8eqVuHxo1S8zOY7XH/fstFsFT3+IlbU59swx2mSkXsHx3ooI1w1D/cIQRDIZUfna2tf hy6GH4YM9V1Sxi6l8UplT1EpeTrmXVu1fMMgNm9n4o5yi2jYhXe2kwsKkwQ/gmXYLmhE /xPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=kEyMtRkVLFS8i1iO7mYtPK1CFn3AKiqVnXMVPcMO4BI=; b=kbIT20CGEhNwhYmb1ZZ+UZ/yrzDGfzzYsHoqGm8VFWrh0LR5mFGZwqlxQtu7asBfau K0PsrH3oXHZXOyu9Vq2Nsejz/gGOeycjvJezLUt9vOSigDVgPshdE9ZDce83+W8u/FIC J+lmOOsP56Yr8cTAX8idGbciCsJqe7/bbYwiTIPpcPJXZo0aIXsaGm73Qyx80PdTljjW KXzlpNG9yGC+v45c4uxbENt2Q14gUdUaELDhghwSr2QJPgF8ZMOWbIhJBqGxkNdXYOzo XNXo0WUwahXA1UG9UnDsxlV6pYDUDsCPLvQ5UmvrJcdH/4nLszFX6efdScgyO9JulAe8 Di/A== X-Gm-Message-State: AOAM532qM9H6qHUKK/+XJ2eIdrnJU4jX20Rs1egteCbIfiVa7uOkAxDi J+PtzVnlT2xEdHIKVGxypDc= X-Google-Smtp-Source: ABdhPJzv32CRG5XOYG3kL2lFnYIno7V3neguHQ9gP5UhEg2ReDfWkIk7Hkqp+XEdktaK/+wjnh6OoA== X-Received: by 2002:a0c:b28c:: with SMTP id r12mr32851943qve.32.1621888667919; Mon, 24 May 2021 13:37:47 -0700 (PDT) From: Nick Rosbrook X-Google-Original-From: Nick Rosbrook To: xen-devel@lists.xenproject.prg, xen-devel@lists.xenproject.org Cc: Nick Rosbrook , George Dunlap , Ian Jackson , Wei Liu Subject: [RESEND PATCH 08/12] golang/xenlight: add functional options to configure Context Date: Mon, 24 May 2021 16:36:49 -0400 Message-Id: X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: References: X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Add a ContextOption type to support functional options in NewContext. Then, add a variadic ContextOption parameter to NewContext, which allows callers to specify 0 or more configuration options. For now, just add the WithLogLevel option so that callers can set the log level of the Context's xentoollog_logger. Future configuration options can be created by adding an appropriate field to the contextOptions struct and creating a With function to return a ContextOption Signed-off-by: Nick Rosbrook --- tools/golang/xenlight/xenlight.go | 44 +++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/tools/golang/xenlight/xenlight.go b/tools/golang/xenlight/xenl= ight.go index f68d7b6e97..65f93abe32 100644 --- a/tools/golang/xenlight/xenlight.go +++ b/tools/golang/xenlight/xenlight.go @@ -136,7 +136,7 @@ func sigchldHandler(ctx *Context) { } =20 // NewContext returns a new Context. -func NewContext() (ctx *Context, err error) { +func NewContext(opts ...ContextOption) (ctx *Context, err error) { ctx =3D &Context{} =20 defer func() { @@ -146,8 +146,19 @@ func NewContext() (ctx *Context, err error) { } }() =20 + // Set the default context options. These fields may + // be modified by the provided opts. + copts :=3D &contextOptions{ + logLevel: LogLevelError, + } + + for _, opt :=3D range opts { + opt.apply(copts) + } + // Create a logger - ctx.logger =3D C.xtl_createlogger_stdiostream(C.stderr, C.XTL_ERROR, 0) + ctx.logger =3D C.xtl_createlogger_stdiostream(C.stderr, + C.xentoollog_level(copts.logLevel), 0) =20 // Allocate a context ret :=3D C.libxl_ctx_alloc(&ctx.ctx, C.LIBXL_VERSION, 0, @@ -201,6 +212,35 @@ func (ctx *Context) Close() error { return nil } =20 +type contextOptions struct { + logLevel LogLevel +} + +// ContextOption is used to configure options for a Context. +type ContextOption interface { + apply(*contextOptions) +} + +type funcContextOption struct { + f func(*contextOptions) +} + +func (fco *funcContextOption) apply(c *contextOptions) { + fco.f(c) +} + +func newFuncContextOption(f func(*contextOptions)) *funcContextOption { + return &funcContextOption{f} +} + +// WithLogLevel sets the log level for a Context's logger. The default lev= el is +// LogLevelError. +func WithLogLevel(level LogLevel) ContextOption { + return newFuncContextOption(func(co *contextOptions) { + co.logLevel =3D level + }) +} + // LogLevel represents an xentoollog_level, and can be used to configre th= e log // level of a Context's logger. type LogLevel int --=20 2.17.1 From nobody Mon May 6 16:59:50 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1621888718; cv=none; d=zohomail.com; s=zohoarc; b=grkZDc69kQDcLot84WKKF3oebOss0VwgAsZsVRI3KtD5fF4LVg45p5zzNCDkHHZkKRzPf7racrE9Ytq0HC9MQNxQyCTc2LbrLCVRywVu1xJBLGrVCOmv8imlMhTY6Yu5XOpUUlBstvUOd1kJfxN0Vao5kOIW7nriK0g3gDmqFS0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621888718; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=MJAWGHEUAw5eoKAlFYrwM/9yu/NhcTzkr9C5oJHPCDA=; b=duBP5aYTsjIMotQHVHJUcTzRbSUWi8ZhNpw+h43sTk0SLl3orizAA2hP06kcki9lAmauOrjbb879SEOELA1WAeG6znYXcmmXX87G2TcRCVxJzLTRaR2MqxtZn31jB1/Skh026rI/jOyljcWGYEbRfgjWFAVVFlL9PmRkLvBCu+w= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1621888718442605.8116997415691; Mon, 24 May 2021 13:38:38 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.131899.246358 (Exim 4.92) (envelope-from ) id 1llHLH-00064S-4v; Mon, 24 May 2021 20:38:27 +0000 Received: by outflank-mailman (output) from mailman id 131899.246358; Mon, 24 May 2021 20:38:27 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1llHLH-000644-0z; Mon, 24 May 2021 20:38:27 +0000 Received: by outflank-mailman (input) for mailman id 131899; Mon, 24 May 2021 20:38:25 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1llHLF-0001ey-T3 for xen-devel@lists.xenproject.org; Mon, 24 May 2021 20:38:25 +0000 Received: from mail-qt1-x833.google.com (unknown [2607:f8b0:4864:20::833]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id a5402a5a-d6d8-4f73-9c70-67ac9f5ed901; Mon, 24 May 2021 20:37:49 +0000 (UTC) Received: by mail-qt1-x833.google.com with SMTP id h24so10195773qtm.12 for ; Mon, 24 May 2021 13:37:49 -0700 (PDT) Received: from localhost.localdomain (c-73-89-138-5.hsd1.vt.comcast.net. [73.89.138.5]) by smtp.gmail.com with ESMTPSA id t25sm5142847qkt.62.2021.05.24.13.37.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 May 2021 13:37:48 -0700 (PDT) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: a5402a5a-d6d8-4f73-9c70-67ac9f5ed901 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=MJAWGHEUAw5eoKAlFYrwM/9yu/NhcTzkr9C5oJHPCDA=; b=Ev2HuCwLxs6mXamXhdwzSjERFJi8CEscqkB7Q+iZuYUeo6pGoJSW9HmzCpHffgdfb8 xExpudG7W1CQCSxiKlftWO9Nv1o/GwOVcqQ2c65+VjPKZNjXoduf0qgMttTTukKbuT+k 7pQAMPKD2lBNN/+XIn5Hr4palHG25SMc/KwFlYpcueuoR87YZlWeutC3dMqEuPhXBkAU 3vziF5PMLpTYNA8LTvTmFfvnKsdxyphOWs8klTh7uFq9EqzMZtRY4beos6uEbDPi54vh FTbUUavmWoM3l93RCEXTt/43Zw5XfRrRY9mnTNGxOiv/aV3CB4tOD15sYAsFsUd/RWY8 XQ3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=MJAWGHEUAw5eoKAlFYrwM/9yu/NhcTzkr9C5oJHPCDA=; b=mHfoc8k8qgvZQ8a6TF/FsEW6ySxX2nHy3nDjd5QCD8l0djXBkylfQKfMgZsl6UhI0B AZSBrXx15LwGWIclbG/ARjbG9J10c5qjFIPH6Luj0G60BcX+ewDfOfiuN+gZrtL9fCQf edSmX+6PtdST9AR+7M+6Hc8WWNbB9REChiJp5RJsuzrWzFmt0iCy8ApcQzk5qdQUstaD vwPgqeRmGPstBwqo+/GdimkItQhIDLgJI6TZinMKsYiXHVdkQBrrXt9a78qJ3Y2yUZT3 1jkjG5UgnRClhRLgm7IqoQ2EUbcs6ODpVh+wYvcqIiXYEFUg1lPNcHdxNqKBrDxvhBEl vkXw== X-Gm-Message-State: AOAM53062sGdyx7XfZIJqCcO8Qm17S997Ow5adYrkIKOFC4KjwLXqY6C zBFgzjm4tdveFJ5SJvDrXLo= X-Google-Smtp-Source: ABdhPJwG+1Ue8vohST1MgBlBsluetTjfaTiM/njhK9jyLVPzMh+gqG6MRmhARJDGBEAxzsrqxYRVww== X-Received: by 2002:ac8:12c9:: with SMTP id b9mr16264534qtj.90.1621888668864; Mon, 24 May 2021 13:37:48 -0700 (PDT) From: Nick Rosbrook X-Google-Original-From: Nick Rosbrook To: xen-devel@lists.xenproject.prg, xen-devel@lists.xenproject.org Cc: Nick Rosbrook , George Dunlap , Ian Jackson , Wei Liu Subject: [RESEND PATCH 09/12] golang/xenlight: add DomainDestroy wrapper Date: Mon, 24 May 2021 16:36:50 -0400 Message-Id: <82c68547f4cec1c82132cd6a867696f4b38dcd3d.1621887506.git.rosbrookn@ainfosec.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: References: X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Add a wrapper around libxl_domain_destroy. Signed-off-by: Nick Rosbrook Reviewed-by: George Dunlap --- tools/golang/xenlight/xenlight.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tools/golang/xenlight/xenlight.go b/tools/golang/xenlight/xenl= ight.go index 65f93abe32..1e0ed109e4 100644 --- a/tools/golang/xenlight/xenlight.go +++ b/tools/golang/xenlight/xenlight.go @@ -1357,3 +1357,13 @@ func (ctx *Context) DomainCreateNew(config *DomainCo= nfig) (Domid, error) { =20 return Domid(cdomid), nil } + +// DomainDestroy destroys a domain given a domid. +func (ctx *Context) DomainDestroy(domid Domid) error { + ret :=3D C.libxl_domain_destroy(ctx.ctx, C.uint32_t(domid), nil) + if ret !=3D 0 { + return Error(ret) + } + + return nil +} --=20 2.17.1 From nobody Mon May 6 16:59:50 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1621889012; cv=none; d=zohomail.com; s=zohoarc; b=nD182KK9e1TWmjFlw/Y1sErDLwR4jIqlkkqWGj6B7bxTQwo3jqkos01ODFc6e4F1DHZRZMVdWq3RUDPGcEkixJrvf8Bcku+TrLuI/q46YijswiZHBejGI8SO2OAy1afclt0Hzcr4M9h5KyAx2FDeQHJR+Vzja9mqw+pxl4SOMJE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621889012; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=Bztafs77V0wo2Yc5MZ62RAYiSnYmIu905Zy3uFkoAyc=; b=ZxwByXvHeZZUM19aZYXE7+CoAgatqWFnq7T7MauhLGKP5/BbIqbiBua1OU73SxsqVuYh7lV+E8aKjlE+WG/8UODQW0cvqm7yw6PuT7QTxRyq/203Qi18Z5M1iAX3B9w7j76R7NxlLFZL5Sxn4ze/5OQmFKh6WRp26s2x32La1TI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1621889012511112.65204355795186; Mon, 24 May 2021 13:43:32 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.131957.246388 (Exim 4.92) (envelope-from ) id 1llHQ0-0000h9-Na; Mon, 24 May 2021 20:43:20 +0000 Received: by outflank-mailman (output) from mailman id 131957.246388; Mon, 24 May 2021 20:43:20 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1llHQ0-0000g7-GY; Mon, 24 May 2021 20:43:20 +0000 Received: by outflank-mailman (input) for mailman id 131957; Mon, 24 May 2021 20:43:18 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1llHLK-0001ey-TK for xen-devel@lists.xenproject.org; Mon, 24 May 2021 20:38:30 +0000 Received: from mail-qt1-x830.google.com (unknown [2607:f8b0:4864:20::830]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 78775fdc-6b0a-4a6a-bd06-66fc0f96909c; Mon, 24 May 2021 20:37:50 +0000 (UTC) Received: by mail-qt1-x830.google.com with SMTP id t17so3827254qta.11 for ; Mon, 24 May 2021 13:37:50 -0700 (PDT) Received: from localhost.localdomain (c-73-89-138-5.hsd1.vt.comcast.net. [73.89.138.5]) by smtp.gmail.com with ESMTPSA id t25sm5142847qkt.62.2021.05.24.13.37.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 May 2021 13:37:49 -0700 (PDT) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 78775fdc-6b0a-4a6a-bd06-66fc0f96909c DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=Bztafs77V0wo2Yc5MZ62RAYiSnYmIu905Zy3uFkoAyc=; b=cdXgCVQ+7s6+xPZNj+r8PDZUWI1D+Vftou8HktB14FbDErTgnUErpGU4xv4Nd2u1gs ynZuviK53q1aM6RIaNFdfgGodt8Nou1pzDOFUnma5aoZ3GEh65gTRozhdUT7s9uLqARo XqMRljIvrUxuT1fWiAklcU3tHmG3Sdf/xHtVkrhxV4tOKThioNzjcT+5gQmo2cSAsJjk FISwHGqNCoSHsonhqt3SF655BVjXNTtTD+bBPcwe8tgpPk2F7IAFumqBTfdoReYOspa3 YbifWz2w+OVqpvysiNBOiWEjFKzy1bGEMojWIdVSfoY+PKPYG+5xBClqGS8D7WwqBrNw qtVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=Bztafs77V0wo2Yc5MZ62RAYiSnYmIu905Zy3uFkoAyc=; b=LXFPA7M78iw53fSnm0z+VOP0cRaZfcZXm3zp0CCzn7pj9Hj6jMm0kKIiqc6tIACtEf 2ZoM3Wk3VIENoq45l7mwxnHrdxTBvfJ2LH9RJ7w2mjbt8XwQYjdh4HshtXiJKNzBkk+c a0e2W77xF5hVhRWyZmene9PkLraHrd1sCDzEloMoW6eDAFpVuZxEj98tDie3SyOr0djj AdXAf9d7VZ9SHQRlU5Td0VZ+6s6/uI2hrRK+XfVYnkF27G9GdOHigDDovFsuM73ArlPr BFHbYnsxNBiXBGoPvoe41SvW5zRspEQ4KhjVdIqKEubHRl4dM89wkF8dxjyEIv73Rgpp VoZQ== X-Gm-Message-State: AOAM5329e8gQDBE8PO4APTPVAFldMIk1QjdIkXZ0vmGcULjjxPkJuBoj 1Ic4ulrsgnyLrw0ngKH3mDs= X-Google-Smtp-Source: ABdhPJyxooUFZcWV9TBoDhn+5+SpABivWW2mrNmvKSUR2/ceaeSNRpOwPHMdcSvtO7JEmUQ9xrGoYg== X-Received: by 2002:ac8:4252:: with SMTP id r18mr25958491qtm.82.1621888669896; Mon, 24 May 2021 13:37:49 -0700 (PDT) From: Nick Rosbrook X-Google-Original-From: Nick Rosbrook To: xen-devel@lists.xenproject.prg, xen-devel@lists.xenproject.org Cc: Nick Rosbrook , George Dunlap , Ian Jackson , Wei Liu Subject: [RESEND PATCH 10/12] golang/xenlight: add SendTrigger wrapper Date: Mon, 24 May 2021 16:36:51 -0400 Message-Id: <7788e3f5f1af622782ede1b879f4f02ec63fa546.1621887506.git.rosbrookn@ainfosec.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: References: X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Add a warpper around libxl_send_trigger. Signed-off-by: Nick Rosbrook Reviewed-by: George Dunlap --- tools/golang/xenlight/xenlight.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tools/golang/xenlight/xenlight.go b/tools/golang/xenlight/xenl= ight.go index 1e0ed109e4..d153feb851 100644 --- a/tools/golang/xenlight/xenlight.go +++ b/tools/golang/xenlight/xenlight.go @@ -1367,3 +1367,14 @@ func (ctx *Context) DomainDestroy(domid Domid) error= { =20 return nil } + +// SendTrigger sends a Trigger to the domain specified by domid. +func (ctx *Context) SendTrigger(domid Domid, trigger Trigger, vcpuid int) = error { + ret :=3D C.libxl_send_trigger(ctx.ctx, C.uint32_t(domid), + C.libxl_trigger(trigger), C.uint32_t(vcpuid), nil) + if ret !=3D 0 { + return Error(ret) + } + + return nil +} --=20 2.17.1 From nobody Mon May 6 16:59:50 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1621889027; cv=none; d=zohomail.com; s=zohoarc; b=ToUy3ICDXwSEJFebwLAieZPG/7AUsI4dQq9RzC8bPOYaua54guavjdErfOrYtre2TWT5UZ78fop7a3czc3TWfccwvYFVUWFESlP3YfaYYNjfjg1Ayit8zfSLbanOynlPoZLrkZ5nu/rOUBXKnb7SkQmk3XHBXg2cgw+Bk41dwsA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621889027; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=8RHEO4rjzSWCDCSeU8KH/ouMS7fzg0KSm8WpWB6iQ0M=; b=B3NzoxmJ4JL0u8SDzON+f+l1EPA81hxBiGRfI9zqHLUgTTe1w1XcQWTRz29+hRscfCLwmRPk70xfub8NqoZGBJuWqagR7JQwY++GPKM9wn6tRjdAKtRSlAVj+QHxTm4Id5AZ9af//9A2GAfSIXxqjzMAJAPOUhLrEAmb7fJZP0E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1621889027042910.4990393194805; Mon, 24 May 2021 13:43:47 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.131970.246410 (Exim 4.92) (envelope-from ) id 1llHQG-0001jV-3r; Mon, 24 May 2021 20:43:36 +0000 Received: by outflank-mailman (output) from mailman id 131970.246410; Mon, 24 May 2021 20:43:36 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1llHQG-0001jO-0D; Mon, 24 May 2021 20:43:36 +0000 Received: by outflank-mailman (input) for mailman id 131970; Mon, 24 May 2021 20:43:34 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1llHLP-0001ey-TM for xen-devel@lists.xenproject.org; Mon, 24 May 2021 20:38:35 +0000 Received: from mail-qv1-xf32.google.com (unknown [2607:f8b0:4864:20::f32]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 00947046-2e8c-4f35-809d-b69a18d0ab17; Mon, 24 May 2021 20:37:51 +0000 (UTC) Received: by mail-qv1-xf32.google.com with SMTP id ez19so14903082qvb.3 for ; Mon, 24 May 2021 13:37:51 -0700 (PDT) Received: from localhost.localdomain (c-73-89-138-5.hsd1.vt.comcast.net. [73.89.138.5]) by smtp.gmail.com with ESMTPSA id t25sm5142847qkt.62.2021.05.24.13.37.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 May 2021 13:37:50 -0700 (PDT) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 00947046-2e8c-4f35-809d-b69a18d0ab17 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=8RHEO4rjzSWCDCSeU8KH/ouMS7fzg0KSm8WpWB6iQ0M=; b=nLWFNrdnKIm7Ua2HOww9s19j0PP204z3qiMCFBp+83qlAImJwMTOuRRCJsRXJR5zDP ErdrQ0XGJpNnYYHP6bjIOeLKzUXQfnP7NYVbSKeXHFOcg0oWV9c9BlamjIfwYvplKB1t uD6XiotgzFevOJBGv6JpehpiSc8bMqyKeiSz7ZhddO/rmHvg9TpZoj9d7p1gDqAcJRyR nboeKBqFhx91jBLRutaAJjCUv5GWL+F26WDCRa0O5YsdgCOzYNTCtJ5+S0nj2gXABSw9 CKDu1zE/S+Yaxi+IshtHMHT1lDBK/dSCeDHCrrgJatUfKcCpoBIRTDQGnn3r4R1pBa5p mhhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=8RHEO4rjzSWCDCSeU8KH/ouMS7fzg0KSm8WpWB6iQ0M=; b=lzli4nSrlgK9rJS83lr7dOt241jqKIaHD3BGgKjNWyygtnn2504nxmoQjrV+L9TQeZ njHvm6Y2GHsGlzM/wdVQxuJIQrj0FYNwxHJLMtEbRVhmdwphZ5PV1py82vq/CpaMNL/T 3MewJbl8NhvYvLtcN3l/FDcifeK+mXRf3nztL2FkeqLJUcBD981G/LnxZSwd05nsQdYq nBOuClGOaDjWJQz9TvyvEChoeIGMUGMpGFEXl3PG6oUSJwApw8uPn7CMlZgpLSgYv9rk 14QX+U6Q0OIn5Bj1rbMl3kAThajze/EFIlX5Lh6XKz/qTSay+xDnFcIrcGwnCK53v03J 3uPA== X-Gm-Message-State: AOAM531HYLKZiZLgH5AVKdgHojHgtU4gxciMHNp7+Jl9K2SMkDocxzpv 6VNXMVjfi4OLvr1dNnnB/BQ= X-Google-Smtp-Source: ABdhPJwBi7YXGDE83pTP//+sHby1z1JIFNQPgNbLE9qNLpKIgm+Mq9a7Pnh1C7dJWjpJu4r1jDr2YQ== X-Received: by 2002:a05:6214:11a4:: with SMTP id u4mr31962146qvv.55.1621888671080; Mon, 24 May 2021 13:37:51 -0700 (PDT) From: Nick Rosbrook X-Google-Original-From: Nick Rosbrook To: xen-devel@lists.xenproject.prg, xen-devel@lists.xenproject.org Cc: Nick Rosbrook , George Dunlap , Ian Jackson , Wei Liu Subject: [RESEND PATCH 11/12] golang/xenlight: do not negate ret when converting to Error Date: Mon, 24 May 2021 16:36:52 -0400 Message-Id: <82bc8b720c3dfb178e52d10ddbebfa8dc5880e7b.1621887506.git.rosbrookn@ainfosec.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: References: X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" There are several locations where the return code from calling into C is negated when being converted to Error. This results in error strings like "libxl error: ", rather than the correct message. Fix all occurrances of this by running: gofmt -w -r 'Error(-ret) -> Error(ret)' xenlight.go from tools/golang/xenlight. Signed-off-by: Nick Rosbrook Acked-by: George Dunlap --- tools/golang/xenlight/xenlight.go | 46 +++++++++++++++---------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/tools/golang/xenlight/xenlight.go b/tools/golang/xenlight/xenl= ight.go index d153feb851..6fb22665cc 100644 --- a/tools/golang/xenlight/xenlight.go +++ b/tools/golang/xenlight/xenlight.go @@ -668,7 +668,7 @@ func SchedulerFromString(name string) (s Scheduler, err= error) { =20 ret :=3D C.libxl_scheduler_from_string(cname, &cs) if ret !=3D 0 { - err =3D Error(-ret) + err =3D Error(ret) return } =20 @@ -707,7 +707,7 @@ func (ctx *Context) CpupoolInfo(Poolid uint32) (pool Cp= upoolinfo, err error) { =20 ret :=3D C.libxl_cpupool_info(ctx.ctx, &c_cpupool, C.uint32_t(Poolid)) if ret !=3D 0 { - err =3D Error(-ret) + err =3D Error(ret) return } defer C.libxl_cpupoolinfo_dispose(&c_cpupool) @@ -741,7 +741,7 @@ func (ctx *Context) CpupoolCreate(Name string, Schedule= r Scheduler, Cpumap Bitma ret :=3D C.libxl_cpupool_create(ctx.ctx, name, C.libxl_scheduler(Schedule= r), cbm, &uuid, &poolid) if ret !=3D 0 { - err =3D Error(-ret) + err =3D Error(ret) return } =20 @@ -754,7 +754,7 @@ func (ctx *Context) CpupoolCreate(Name string, Schedule= r Scheduler, Cpumap Bitma func (ctx *Context) CpupoolDestroy(Poolid uint32) (err error) { ret :=3D C.libxl_cpupool_destroy(ctx.ctx, C.uint32_t(Poolid)) if ret !=3D 0 { - err =3D Error(-ret) + err =3D Error(ret) return } =20 @@ -765,7 +765,7 @@ func (ctx *Context) CpupoolDestroy(Poolid uint32) (err = error) { func (ctx *Context) CpupoolCpuadd(Poolid uint32, Cpu int) (err error) { ret :=3D C.libxl_cpupool_cpuadd(ctx.ctx, C.uint32_t(Poolid), C.int(Cpu)) if ret !=3D 0 { - err =3D Error(-ret) + err =3D Error(ret) return } =20 @@ -783,7 +783,7 @@ func (ctx *Context) CpupoolCpuaddCpumap(Poolid uint32, = Cpumap Bitmap) (err error =20 ret :=3D C.libxl_cpupool_cpuadd_cpumap(ctx.ctx, C.uint32_t(Poolid), &cbm) if ret !=3D 0 { - err =3D Error(-ret) + err =3D Error(ret) return } =20 @@ -794,7 +794,7 @@ func (ctx *Context) CpupoolCpuaddCpumap(Poolid uint32, = Cpumap Bitmap) (err error func (ctx *Context) CpupoolCpuremove(Poolid uint32, Cpu int) (err error) { ret :=3D C.libxl_cpupool_cpuremove(ctx.ctx, C.uint32_t(Poolid), C.int(Cpu= )) if ret !=3D 0 { - err =3D Error(-ret) + err =3D Error(ret) return } =20 @@ -812,7 +812,7 @@ func (ctx *Context) CpupoolCpuremoveCpumap(Poolid uint3= 2, Cpumap Bitmap) (err er =20 ret :=3D C.libxl_cpupool_cpuremove_cpumap(ctx.ctx, C.uint32_t(Poolid), &c= bm) if ret !=3D 0 { - err =3D Error(-ret) + err =3D Error(ret) return } =20 @@ -826,7 +826,7 @@ func (ctx *Context) CpupoolRename(Name string, Poolid u= int32) (err error) { =20 ret :=3D C.libxl_cpupool_rename(ctx.ctx, name, C.uint32_t(Poolid)) if ret !=3D 0 { - err =3D Error(-ret) + err =3D Error(ret) return } =20 @@ -839,7 +839,7 @@ func (ctx *Context) CpupoolCpuaddNode(Poolid uint32, No= de int) (Cpus int, err er =20 ret :=3D C.libxl_cpupool_cpuadd_node(ctx.ctx, C.uint32_t(Poolid), C.int(N= ode), &ccpus) if ret !=3D 0 { - err =3D Error(-ret) + err =3D Error(ret) return } =20 @@ -854,7 +854,7 @@ func (ctx *Context) CpupoolCpuremoveNode(Poolid uint32,= Node int) (Cpus int, err =20 ret :=3D C.libxl_cpupool_cpuremove_node(ctx.ctx, C.uint32_t(Poolid), C.in= t(Node), &ccpus) if ret !=3D 0 { - err =3D Error(-ret) + err =3D Error(ret) return } =20 @@ -867,7 +867,7 @@ func (ctx *Context) CpupoolCpuremoveNode(Poolid uint32,= Node int) (Cpus int, err func (ctx *Context) CpupoolMovedomain(Poolid uint32, Id Domid) (err error)= { ret :=3D C.libxl_cpupool_movedomain(ctx.ctx, C.uint32_t(Poolid), C.uint32= _t(Id)) if ret !=3D 0 { - err =3D Error(-ret) + err =3D Error(ret) return } =20 @@ -1028,7 +1028,7 @@ func (bm Bitmap) String() (s string) { func (ctx *Context) GetMaxCpus() (maxCpus int, err error) { ret :=3D C.libxl_get_max_cpus(ctx.ctx) if ret < 0 { - err =3D Error(-ret) + err =3D Error(ret) return } maxCpus =3D int(ret) @@ -1039,7 +1039,7 @@ func (ctx *Context) GetMaxCpus() (maxCpus int, err er= ror) { func (ctx *Context) GetOnlineCpus() (onCpus int, err error) { ret :=3D C.libxl_get_online_cpus(ctx.ctx) if ret < 0 { - err =3D Error(-ret) + err =3D Error(ret) return } onCpus =3D int(ret) @@ -1050,7 +1050,7 @@ func (ctx *Context) GetOnlineCpus() (onCpus int, err = error) { func (ctx *Context) GetMaxNodes() (maxNodes int, err error) { ret :=3D C.libxl_get_max_nodes(ctx.ctx) if ret < 0 { - err =3D Error(-ret) + err =3D Error(ret) return } maxNodes =3D int(ret) @@ -1063,7 +1063,7 @@ func (ctx *Context) GetFreeMemory() (memkb uint64, er= r error) { ret :=3D C.libxl_get_free_memory(ctx.ctx, &cmem) =20 if ret < 0 { - err =3D Error(-ret) + err =3D Error(ret) return } =20 @@ -1108,7 +1108,7 @@ func (ctx *Context) DomainInfo(Id Domid) (di *Dominfo= , err error) { ret :=3D C.libxl_domain_info(ctx.ctx, &cdi, C.uint32_t(Id)) =20 if ret !=3D 0 { - err =3D Error(-ret) + err =3D Error(ret) return } =20 @@ -1121,7 +1121,7 @@ func (ctx *Context) DomainUnpause(Id Domid) (err erro= r) { ret :=3D C.libxl_domain_unpause(ctx.ctx, C.uint32_t(Id), nil) =20 if ret !=3D 0 { - err =3D Error(-ret) + err =3D Error(ret) } return } @@ -1131,7 +1131,7 @@ func (ctx *Context) DomainPause(id Domid) (err error)= { ret :=3D C.libxl_domain_pause(ctx.ctx, C.uint32_t(id), nil) =20 if ret !=3D 0 { - err =3D Error(-ret) + err =3D Error(ret) } return } @@ -1141,7 +1141,7 @@ func (ctx *Context) DomainShutdown(id Domid) (err err= or) { ret :=3D C.libxl_domain_shutdown(ctx.ctx, C.uint32_t(id), nil) =20 if ret !=3D 0 { - err =3D Error(-ret) + err =3D Error(ret) } return } @@ -1151,7 +1151,7 @@ func (ctx *Context) DomainReboot(id Domid) (err error= ) { ret :=3D C.libxl_domain_reboot(ctx.ctx, C.uint32_t(id), nil) =20 if ret !=3D 0 { - err =3D Error(-ret) + err =3D Error(ret) } return } @@ -1214,7 +1214,7 @@ func (ctx *Context) ConsoleGetTty(id Domid, consNum i= nt, conType ConsoleType) (p var cpath *C.char ret :=3D C.libxl_console_get_tty(ctx.ctx, C.uint32_t(id), C.int(consNum),= C.libxl_console_type(conType), &cpath) if ret !=3D 0 { - err =3D Error(-ret) + err =3D Error(ret) return } defer C.free(unsafe.Pointer(cpath)) @@ -1229,7 +1229,7 @@ func (ctx *Context) PrimaryConsoleGetTty(domid uint32= ) (path string, err error) var cpath *C.char ret :=3D C.libxl_primary_console_get_tty(ctx.ctx, C.uint32_t(domid), &cpa= th) if ret !=3D 0 { - err =3D Error(-ret) + err =3D Error(ret) return } defer C.free(unsafe.Pointer(cpath)) --=20 2.17.1 From nobody Mon May 6 16:59:50 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1621889010; cv=none; d=zohomail.com; s=zohoarc; b=oG3/PnsJB6Z3K4qKvQvSPnlSMHQ21Ys3ORy32q7kV+0X1+zHp4QIfN8gy9ZH6G+u9i40wgdPBMavYcSoyRiUAV2B6kF/eBWJR1u4Ihqm6hD0DPmN68zjWLN/y2IYiOeBKeBPmI/yeK68V8r3hDrCgAc8pR3JUb8AUcfpEoVGydc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621889010; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=qZQxVcviBuvDjUeKOepu8YHqa+eGuG2DXDt5FNQL7LQ=; b=NuBXWKtLkU0E8q9WZmKufR9h9RraPRl/XJQpYTX8TljKBnQPGGe+dzX4WO2X2tBHpwSrdm+9/ovlrt/4SAg89UAccsLWlVzzWpy79aV11AAjGx5OF/qjGOw23AlGFFwcXRkqbA/y4hS0LfTV1rhNgJImLi+byMgVKXrC78PBwn8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1621889010267238.1746128203058; Mon, 24 May 2021 13:43:30 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.131941.246369 (Exim 4.92) (envelope-from ) id 1llHPt-0000Gx-Rv; Mon, 24 May 2021 20:43:13 +0000 Received: by outflank-mailman (output) from mailman id 131941.246369; Mon, 24 May 2021 20:43:13 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1llHPt-0000Gj-Oc; Mon, 24 May 2021 20:43:13 +0000 Received: by outflank-mailman (input) for mailman id 131941; Mon, 24 May 2021 20:43:13 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1llHLU-0001ey-TW for xen-devel@lists.xenproject.org; Mon, 24 May 2021 20:38:40 +0000 Received: from mail-qk1-x729.google.com (unknown [2607:f8b0:4864:20::729]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 27c6af09-440c-442f-9373-fb53e860d068; Mon, 24 May 2021 20:37:52 +0000 (UTC) Received: by mail-qk1-x729.google.com with SMTP id h20so12792625qko.11 for ; Mon, 24 May 2021 13:37:52 -0700 (PDT) Received: from localhost.localdomain (c-73-89-138-5.hsd1.vt.comcast.net. [73.89.138.5]) by smtp.gmail.com with ESMTPSA id t25sm5142847qkt.62.2021.05.24.13.37.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 May 2021 13:37:51 -0700 (PDT) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 27c6af09-440c-442f-9373-fb53e860d068 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=qZQxVcviBuvDjUeKOepu8YHqa+eGuG2DXDt5FNQL7LQ=; b=G+pyi2ApCHcfc8UBweruANC8e0cOXX1CT03CKkAiDQRJHE7Klfn/pOpBYStmWWcyA4 AaYspo8J8GV+nlWKzUOviIvEb+K/L3KaHitNBCX35AfW8kdilbhDTj2Ih+mtyOfGM8Yr F6nBzUQijOg+DmNcRbgoOg96MmWJ0EdBHAWkGpHLkVJTUYcMR6XCap7KSN2lpvXCeSkh I2wZq1GZ/PRiZQNe4/3wLXlfK7NgQOSFqaxwGopBrV+57r0/qvF4ZpsUEW+By46BlXxT dAIWqnDwKUkL/ZBMot4k6a94qk4V1uIM83QIstPfIjkNVGN8MYd8rASPEAQCNcKJUt1r LxWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=qZQxVcviBuvDjUeKOepu8YHqa+eGuG2DXDt5FNQL7LQ=; b=lGYwDTmUVlw67BsPd9DybsYtrfI6U/n3xuFEsVsk5K9vgCoakI2stb8Zm/MFLnumYm qoeC0Y3y2SYn0tOGLNGvH/cPAuDVZF28ahnow891HhbK9nugTbT0CDtqKZhQPnWO4QlV Vk3O4ZKi9cJCqiEyr0nmLbCyj2ZOeInqegJriE+zK+0CYuTVnjFCh4eJXrxK8DiRCari HWyt0NnmXfY/PQYc+OItG3qB+EnULSAwqsZ5w0NdLsF3sC1Zj9AwUg0P9cLACjy+UyY8 onHXzo2N/OFIIVLUbXiiEVzHMvBz5uZ3tmWBw5ehtMtoYhU2vBGDZhmbulH2NrlHvd2U +q7w== X-Gm-Message-State: AOAM533EWehlpskrWWNCsvTzncjw+JjY+PlmMJzT7x04PvccDBnprQjq 9cCJJfTewej3h3xTVVhPtu4= X-Google-Smtp-Source: ABdhPJxK46rUoHOq90Ayw4jb8Va6QGKRHd2hRegjODp3MiUcX7+YcJZ+SyslYYQ7cj5J7aomMpbqPw== X-Received: by 2002:a05:620a:1252:: with SMTP id a18mr30362134qkl.416.1621888672226; Mon, 24 May 2021 13:37:52 -0700 (PDT) From: Nick Rosbrook X-Google-Original-From: Nick Rosbrook To: xen-devel@lists.xenproject.prg, xen-devel@lists.xenproject.org Cc: Nick Rosbrook , George Dunlap , Ian Jackson , Wei Liu Subject: [RESEND PATCH 12/12] golang/xenlight: add NotifyDomainDeath method to Context Date: Mon, 24 May 2021 16:36:53 -0400 Message-Id: X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: References: X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Add a helper function to wait for domain death events, and then write the events to a provided channel. This handles the enabling/disabling of the event type, freeing the event, and converting it to a Go type. The caller can then handle the event however they need to. This function will run until a provided context.Context is cancelled. NotifyDomainDeath spawns two goroutines that return when the context.Context is done. The first will make sure that the domain death event is disabled, and that the corresponding event queue is cleared. The second calls libxl_event_wait, and writes the event to the provided channel. With this, callers should be able to manage a full domain life cycle. Add to the comment of DomainCreateNew so that package uses know they should use this method in conjunction with DomainCreateNew. Signed-off-by: Nick Rosbrook --- tools/golang/xenlight/xenlight.go | 83 ++++++++++++++++++++++++++++++- 1 file changed, 82 insertions(+), 1 deletion(-) diff --git a/tools/golang/xenlight/xenlight.go b/tools/golang/xenlight/xenl= ight.go index 6fb22665cc..8406883433 100644 --- a/tools/golang/xenlight/xenlight.go +++ b/tools/golang/xenlight/xenlight.go @@ -53,6 +53,7 @@ import "C" */ =20 import ( + "context" "fmt" "os" "os/signal" @@ -1340,7 +1341,9 @@ func (ctx *Context) DeviceUsbdevRemove(domid Domid, u= sbdev *DeviceUsbdev) error return nil } =20 -// DomainCreateNew creates a new domain. +// DomainCreateNew creates a new domain. Callers of DomainCreateNew are +// responsible for handling the death of the resulting domain. This should= be +// done using NotifyDomainDeath. func (ctx *Context) DomainCreateNew(config *DomainConfig) (Domid, error) { var cdomid C.uint32_t var cconfig C.libxl_domain_config @@ -1358,6 +1361,84 @@ func (ctx *Context) DomainCreateNew(config *DomainCo= nfig) (Domid, error) { return Domid(cdomid), nil } =20 +// NotifyDomainDeath registers an event handler for domain death events fo= r a +// given domnid, and writes events received to ec. NotifyDomainDeath retur= ns an +// error if it cannot register the event handler, but other errors encount= ered +// are just logged. The goroutine spawned by calling NotifyDomainDeath runs +// until the provided context.Context's Done channel is closed. +func (ctx *Context) NotifyDomainDeath(c context.Context, domid Domid, ec c= han<- Event) error { + var deathw *C.libxl_evgen_domain_death + + ret :=3D C.libxl_evenable_domain_death(ctx.ctx, C.uint32_t(domid), 0, &de= athw) + if ret !=3D 0 { + return Error(ret) + } + + // Spawn a goroutine that is responsible for cleaning up when the + // passed context.Context's Done channel is closed. + go func() { + <-c.Done() + + ctx.logd("cleaning up domain death event handler for domain %d", domid) + + // Disable the event generation. + C.libxl_evdisable_domain_death(ctx.ctx, deathw) + + // Make sure any events that were generated get cleaned up so they + // do not linger in the libxl event queue. + var evc *C.libxl_event + for { + ret :=3D C.libxl_event_check(ctx.ctx, &evc, C.LIBXL_EVENTMASK_ALL, nil,= nil) + if ret !=3D 0 { + return + } + C.libxl_event_free(ctx.ctx, evc) + } + }() + + go func() { + var ( + ev Event + evc *C.libxl_event + ) + + for { + select { + case <-c.Done(): + return + default: + // Go on and check for an event... + } + + ret :=3D C.libxl_event_wait(ctx.ctx, &evc, C.LIBXL_EVENTMASK_ALL, nil, = nil) + if ret !=3D 0 { + ctx.logw("unexpected error waiting for event: %s", Error(ret)) + continue + } + + // Try to convert the event to Go, and then free the + // C.libxl_event no matter what. + err :=3D ev.fromC(evc) + C.libxl_event_free(ctx.ctx, evc) + if err !=3D nil { + ctx.logw("error converting event from C: %v", err) + continue + } + + ctx.logd("received domain death event (domid=3D%v, type=3D%v)", ev.Domi= d, ev.Type) + + // Write the event to the channel + select { + case ec <- ev: + case <-c.Done(): + return + } + } + }() + + return nil +} + // DomainDestroy destroys a domain given a domid. func (ctx *Context) DomainDestroy(domid Domid) error { ret :=3D C.libxl_domain_destroy(ctx.ctx, C.uint32_t(domid), nil) --=20 2.17.1