From nobody Fri Apr 26 04:54:34 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=1619655303; cv=none; d=zohomail.com; s=zohoarc; b=dPT4mUrQtOWAQajdDJ2HcsRVFDWsnxP8ka3QiuMFpekxdXTfJF09jUHv+qmlkCXEh0Ed6ki8mpmvHUClDoHmWNKWzTwNE1lZI+hbseX03cyaI81Sm5b5em0A89+RR6D307NMoaSCIpzryRqBGycjT6m+l8X7QoFDP4sxShnm8Xk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619655303; 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=KQhLUEc7nnionOSRM7MuPsygahXBgbPk+yF8FBNBnklTyBw3x5rzZRUzG348K+hq0gtN7Hdew29CH0V5XVv6mATz+9LfgfSlVWlksATReMUGOG0fKJymls7KiqYqdEza3yF+tXnGOY0WN1WP3+Ot9IbR27pFrc6e4B9SEcyP/RI= 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 1619655302996145.08712041890806; Wed, 28 Apr 2021 17:15:02 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.119615.226182 (Exim 4.92) (envelope-from ) id 1lbuKL-00074W-Db; Thu, 29 Apr 2021 00:14:45 +0000 Received: by outflank-mailman (output) from mailman id 119615.226182; Thu, 29 Apr 2021 00:14:45 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lbuKL-00074D-9a; Thu, 29 Apr 2021 00:14:45 +0000 Received: by outflank-mailman (input) for mailman id 119615; Thu, 29 Apr 2021 00:14:43 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lbuKJ-00072A-Tc for xen-devel@lists.xenproject.org; Thu, 29 Apr 2021 00:14:43 +0000 Received: from mail-qt1-x82b.google.com (unknown [2607:f8b0:4864:20::82b]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 1b171eda-13ee-459c-a382-a7efd0e3d097; Thu, 29 Apr 2021 00:14:39 +0000 (UTC) Received: by mail-qt1-x82b.google.com with SMTP id j19so7738082qtx.13 for ; Wed, 28 Apr 2021 17:14:39 -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 r185sm1021694qkf.78.2021.04.28.17.14.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Apr 2021 17:14:38 -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: 1b171eda-13ee-459c-a382-a7efd0e3d097 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; bh=CIwXzDWTaek3ruD8eh2yS/rqRAAsDRXtMIQbC1kOPa4=; b=f4V0FpJy9dRR1osaw30MbdWHpAUh9x90l7i8MllowCfeAGnUpma9AH3jZ8bTYzatum c7Dq6lKdNNqZPysBSV7COSk/TwuvsYfQ+BxFgh4EkzTtl5ukyN1xjO2amvCMfd76HdPZ 5YML492by4O2ov+4fI5kux8KA8ldGwd0WIKD+73iUtj8S+Gmy3lJkXGbxNilpziBGAGI teUpGyA4MI8phADiH05UjHQ7Q4JqZdeiZEbah/vxIf5O+//57sDqmIK8GiyJs3eZvFOJ wtDqHs4EapiS0T2u7J3nGMpr2Hih/GuNM1QQmGdWPrdbypJLRJJJpnoMX6es13s3URs9 559g== 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; bh=CIwXzDWTaek3ruD8eh2yS/rqRAAsDRXtMIQbC1kOPa4=; b=Jij7OVThzqNPxk1KIjAMZmNFIJYUDXHPK7SUYgcF/E8Y1VPleNgSsu3Z8pH821yPqx dvr0aj+y7nNX0UonNTMNQs339GqC2MO5dTopYx2qiMZA4SZa5+fX66b9bwkPWrCnc6F4 3UuOhGwVJEP2sUvC48Xwx/jsOdR+ZiymRn9CBarG873VXLdtUeNX5Y+FHqao/mrWpdOQ LxHvhHZPK8F6b2CXrA9ToXgb8UD/mxyF6h+Y9v93L3BZyi1ASzse7HkstSIz2Fpgqo/j G73mH241acD+eEupc4ixI9lWLBcJFfUkGoMmlSmbdrBQwTT9E/7SK4E7N31zLfCXdwK2 DjHA== X-Gm-Message-State: AOAM530BWuZvO8VYw6MaTs3/foXzSldufWuju/Ej3GlxHTMejxpY/QvU t64OY7NNNVnOAcVSzYVqO0S+aHDUsRc= X-Google-Smtp-Source: ABdhPJx5ujgeg0d2gbXMFIdGB8a53HLirR//KrIoxV+Z+RbA2Qo/1ZTg9ErpjBQj8PdPoOQsS9nFWA== X-Received: by 2002:ac8:5286:: with SMTP id s6mr29135170qtn.71.1619655278457; Wed, 28 Apr 2021 17:14:38 -0700 (PDT) From: Nick Rosbrook X-Google-Original-From: Nick Rosbrook To: xen-devel@lists.xenproject.org Cc: Nick Rosbrook , George Dunlap , Ian Jackson , Wei Liu Subject: [PATCH 01/12] golang/xenlight: update generated code Date: Wed, 28 Apr 2021 20:14:23 -0400 Message-Id: <29e665fc1c9313f5e221e9e5e15d7c2d9c1eb4a7.1619655104.git.rosbrookn@ainfosec.com> X-Mailer: git-send-email 2.17.1 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 --- 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 Fri Apr 26 04:54:34 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=1619655304; cv=none; d=zohomail.com; s=zohoarc; b=N/pTHbJbNqFk1FQGRc/PB0UWaUZ3rq1HiROHKvw4Uzx6KgovMwncmqLTRcJni/Mt87FuuuMwlyE6s/s14x5Q+JzNI3olW/nFpCVGditCkoGusitdx3Vp/8jjUGRFU9MQ/MiPaYkRhbelZy5Ge73763q8zzlzLuRtDZult11bl+w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619655304; 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=iQOcaeIy42SebJaIihPCvkuD2jC2JbmQHOTlthjO5frMf80VHVzdMqBl86Ld3NY0FdipqSxltSAUFEPCCipGqMOXlggqSsODRsC+OK5nCcs5JrX+6RnyeaEfhgGiQyZm5KYA7+XtBrFV9m9gR5yDL0/6fy826hUYGUhw0eLZ71k= 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 1619655304364870.0768884365892; Wed, 28 Apr 2021 17:15:04 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.119616.226194 (Exim 4.92) (envelope-from ) id 1lbuKQ-000786-Lg; Thu, 29 Apr 2021 00:14:50 +0000 Received: by outflank-mailman (output) from mailman id 119616.226194; Thu, 29 Apr 2021 00:14:50 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lbuKQ-00077z-Ia; Thu, 29 Apr 2021 00:14:50 +0000 Received: by outflank-mailman (input) for mailman id 119616; Thu, 29 Apr 2021 00:14:49 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lbuKO-00072A-Tq for xen-devel@lists.xenproject.org; Thu, 29 Apr 2021 00:14:48 +0000 Received: from mail-qk1-x736.google.com (unknown [2607:f8b0:4864:20::736]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 436ed0b2-c47d-45a4-a919-3f92849f675e; Thu, 29 Apr 2021 00:14:40 +0000 (UTC) Received: by mail-qk1-x736.google.com with SMTP id o5so65593653qkb.0 for ; Wed, 28 Apr 2021 17:14: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 r185sm1021694qkf.78.2021.04.28.17.14.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Apr 2021 17:14:39 -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: 436ed0b2-c47d-45a4-a919-3f92849f675e 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=brDXVwtZ9DOU5zpYvrl7RNpKNGJxeMznujlMSHAqojenCtF9ZFdDnle8brORshOy7M 42qo8z82cPE5wzfyb+2yYp6twrd4mnfILFLsVK+77Pracr3i9pZ6ztpMC99BTMdm1ClA cYKE9wUNf+ykjqnyoqoZIny5xYvuAEi8abL9Bv6/zuc4ztmY6Hr9rK4KeSXqKyojuI83 mC2dAy3kzNXxXwIn1B96GCBBQrpOeBaemjL7aIDEppDSR1t5BREoVz1lQv0cDq0HJchR zI+iRFU2g+no3aAw/asUTOlJ6M7kTf9Jj4nMTw85NAm9DZ8GlLSZFOWPqn0NFfea4Ana CFBA== 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=rS38t0/Fq5TYiC1cNCFXxkcJwdO32E5vGvGW6xZ2REZ0awie+FmlMl799UV8j9pf+J t7gZqydtFbGaCDOrsMNJH+x0iy/FhumylDnIBTuV/Yh1lSSoTxvVHS9dnMEqG30QdJeW r90Xn0bY5XhailyT4m9OgwbJGLV0Tz0YBthKn3R5BL3bHXIyRWzPr83Jpx5p4+kQtkEP S6diJ9ZYztqGX5B3XpcJsaWtEWOendMgLu8eCi3djim0EY/U7V88bpsQU7QIsh6kQcit CMT6ZIMWhMykaKfKOUkLy1hP87FmFwdzpTZjW8pq+gsd70OZA9wHMkFgLcJ+Ym2urW/R EVXw== X-Gm-Message-State: AOAM5339gN5Vw3hmG8X+/HIXMfyLFRJLeYxkFJC/aVvAcVbhQo6qNFI2 3SA0hVwwgMxa9DHAO9hVwsuzes8LzSk= X-Google-Smtp-Source: ABdhPJzvTftEET+PZK17rrlsHnVK9BhzZX5bMB8KQl6sVY3DdiswQ0xNZIi3w0WOnBBdguaMxlnOJQ== X-Received: by 2002:a37:5a46:: with SMTP id o67mr31675105qkb.240.1619655279544; Wed, 28 Apr 2021 17:14:39 -0700 (PDT) From: Nick Rosbrook X-Google-Original-From: Nick Rosbrook To: xen-devel@lists.xenproject.org Cc: Nick Rosbrook , George Dunlap , Ian Jackson , Wei Liu Subject: [PATCH 02/12] golang/xenlight: fix StringList toC conversion Date: Wed, 28 Apr 2021 20:14:24 -0400 Message-Id: <0a15ed9eb6cd70416995f5d9805c98572eb6bd50.1619655104.git.rosbrookn@ainfosec.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: <29e665fc1c9313f5e221e9e5e15d7c2d9c1eb4a7.1619655104.git.rosbrookn@ainfosec.com> References: <29e665fc1c9313f5e221e9e5e15d7c2d9c1eb4a7.1619655104.git.rosbrookn@ainfosec.com> 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 --- 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 Fri Apr 26 04:54:34 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=1619655316; cv=none; d=zohomail.com; s=zohoarc; b=UNUSyDb0EPGc1rx8Vs0EsC+cyFB4ZjUVPA8RcTsGXzQWaCRr1NqIY34DDpxlza3GpOyf07IN4cXdPzJD61W8QPFAo0W7vO6MTLfqFKCOkl0RAyHV9UReJpRMmOK0l9NMpJd4rL7LwVV+cQ/S4B1YC2V2qzmorRdlPKp4jnUh6yo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619655316; 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=R/j5IDJNGWtTlntC89TuEkYlLfS0j7lv1o+7N+ix/umnYwQEFLgFIuzRLWdeJSNjnobYyojAiTGw7jRIYP8gYqhu2cxjvv6NtvZmS4ePqFHYUPDKIOzVVlZCU6ifrUSeLydcrt3owa8GVU0ZgWg8VTVxXPNzqFZl6B5o+3qLy74= 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 1619655316319578.969328712071; Wed, 28 Apr 2021 17:15:16 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.119621.226218 (Exim 4.92) (envelope-from ) id 1lbuKb-0007Hz-7g; Thu, 29 Apr 2021 00:15:01 +0000 Received: by outflank-mailman (output) from mailman id 119621.226218; Thu, 29 Apr 2021 00:15:01 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lbuKb-0007Hp-3q; Thu, 29 Apr 2021 00:15:01 +0000 Received: by outflank-mailman (input) for mailman id 119621; Thu, 29 Apr 2021 00:14:59 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lbuKY-00072A-Tx for xen-devel@lists.xenproject.org; Thu, 29 Apr 2021 00:14:58 +0000 Received: from mail-qk1-x72a.google.com (unknown [2607:f8b0:4864:20::72a]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 319f02a1-26ba-43dc-8aaf-c36d6b6dd190; Thu, 29 Apr 2021 00:14:41 +0000 (UTC) Received: by mail-qk1-x72a.google.com with SMTP id 66so26014580qkf.2 for ; Wed, 28 Apr 2021 17:14: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 r185sm1021694qkf.78.2021.04.28.17.14.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Apr 2021 17:14: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: 319f02a1-26ba-43dc-8aaf-c36d6b6dd190 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=Hqn+oUKMlcXpq1h0ExB/ZfAy86ZQYkb32unXiTP+XSq3xFHLZ7+0p/aR2EVAJSpTBW AZrHcTCiUOX5kL7JX5qcuD3WVOqlbma7q234AtivYvByeS1qCAraUslZ2dtwT/mi/abx 5+KIptlww5bump2pG9vpM9riM0iqOPg35bZkxtkFZ2BQ3HtjiqGcP6uXptGzB5KtGanq waL8II4ko7Aa5A6EVjIAJ9JvaeXUyOfPKnzweNlRP5NjDvDXQ1Muw42tXFw+Csyza5pe ymVDjeAwqvF6htxqNqPnjAVUR1Ft0iN4lBCuhVVjzwjIExUorDGnhUqpaO7Ofq8KBf2l 1fWg== 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=acgoB5ZjI4L0026R9NzlwVyBTLRXitOP/UPUhfXvY0rKerEWB/JFdyjb9Kjaaga5ZX 6x6LoFaPpE1Wandxx0+ckH5eXh/NcTKx0gBFHvOTcv3RQkoXe1gi1hCks7rv15Bu0j94 jlVAd80svdcE+wduQ1kWY7+fR9nX58WNIbVJnwfyBGY0bOrrfJmE6Wm96+P7bC6pnKBO gEUAGqSal5DIfHxduAEUB/49NPfWrO2Fm+TiPfg6VC3ga2EjywoCyIfdVo5baVYM/K4c +nleLoaeimHjBzb58MiWPMqK5/zpUKTwydxoPW3WjdKUmhiaOYlXRTw57RoiQno+lD1G TQOw== X-Gm-Message-State: AOAM533Mw0V+idimjMRrdwEZGtQnkQzokWzBsykxD2zZgcwnEDaSyEYI mbzsZdQkB+BfH2/AZOJEi72zZynjcgU= X-Google-Smtp-Source: ABdhPJxDrhgR+Agdwwa8GG3hVHvQHKk01WIAOp/Q3pWpvt/3bdUQRS+80FsrYDY+hItRfBhByWnSrw== X-Received: by 2002:a37:6249:: with SMTP id w70mr24334594qkb.99.1619655280638; Wed, 28 Apr 2021 17:14:40 -0700 (PDT) From: Nick Rosbrook X-Google-Original-From: Nick Rosbrook To: xen-devel@lists.xenproject.org Cc: Nick Rosbrook , George Dunlap , Ian Jackson , Wei Liu Subject: [PATCH 03/12] golang/xenlight: fix string conversion in generated toC functions Date: Wed, 28 Apr 2021 20:14:25 -0400 Message-Id: <06763aceff41167d3d3bbd603f729572c1f55c77.1619655104.git.rosbrookn@ainfosec.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: <29e665fc1c9313f5e221e9e5e15d7c2d9c1eb4a7.1619655104.git.rosbrookn@ainfosec.com> References: <29e665fc1c9313f5e221e9e5e15d7c2d9c1eb4a7.1619655104.git.rosbrookn@ainfosec.com> 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 --- 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 Fri Apr 26 04:54:34 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=1619655308; cv=none; d=zohomail.com; s=zohoarc; b=Wn8H/kT4+ckQAxH1D1fTWFTDgiUSXbSF3DYRWJZrmktIQkNKvD/eXo8w4xk7hL620Ki5/UGsdmgOXsy70M+m5GM6h63cbLnA9oIBkVvDnoLca4TuE57zgkAQqLJ2dli9fwUszkFlFMOvag4LSrq2fEv5wBzN5FcG34WTnN0eUR8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619655308; 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=Ei157VfylI0JXp29DfeeJpf0qzFPk7OaBFo0bZTfL+070IpRCf/GxIaiqXuNlmrZ7J7PTAK2epZly8PbxyfM1yuzKmi/fF2DYf700efkTFDPsXH9J61JzDtymZAubOiYHPzIXJwGk4xRVl3PWO77U52gJ0u8eHs9IBN3Bn3KCf8= 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 1619655308727206.22519976143815; Wed, 28 Apr 2021 17:15:08 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.119617.226206 (Exim 4.92) (envelope-from ) id 1lbuKV-0007Cj-V4; Thu, 29 Apr 2021 00:14:55 +0000 Received: by outflank-mailman (output) from mailman id 119617.226206; Thu, 29 Apr 2021 00:14:55 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lbuKV-0007Ca-RN; Thu, 29 Apr 2021 00:14:55 +0000 Received: by outflank-mailman (input) for mailman id 119617; Thu, 29 Apr 2021 00:14:54 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lbuKT-00072A-Tx for xen-devel@lists.xenproject.org; Thu, 29 Apr 2021 00:14:53 +0000 Received: from mail-qk1-x731.google.com (unknown [2607:f8b0:4864:20::731]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id d2f678f5-9d9f-493b-ab92-319259b8698b; Thu, 29 Apr 2021 00:14:42 +0000 (UTC) Received: by mail-qk1-x731.google.com with SMTP id v23so13535062qkj.13 for ; Wed, 28 Apr 2021 17:14:42 -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 r185sm1021694qkf.78.2021.04.28.17.14.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Apr 2021 17:14: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: d2f678f5-9d9f-493b-ab92-319259b8698b 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=nwB/PeMLkI5d5Mqyaog1rfa0K2BxHc+Qq5tQqH/hyNbAD8mcLSzN90mrysxA9dNmkC 72SwKu3SVMXjLtLh8M+3S2y9GU4L2pnCItbWq1adnWsxSFEoHVT3gX5ES/1tg1c/JRxe jpvMkBTCQVXnkaPbTUZgyuKXddPHZIr6WahTALnVulbTPqX1WbmRD0Wvwgl2BNom614r Zi5WgKyqp5YPxLqdJV8lvoIo8b0K6IoaHmNI5jItQbBWp0uGC+xs8GO6Zd7PeK67oveH 3u+I0ohJyC1cHAnwEyrtnF3JJvOi2l2gBg/rQJgvcYmieT++3Af7Np4pIWamdGRXr6lU WWpg== 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=pTONOOesor04uXZTiDYzFTPA/tlZ+yUgN8TmG1HV0HBTZwGy0urJl3qdlJ/s4REA97 hNgvDZx0K4Vw6ImtkRipmrm4m8Ysa3CfLYfBqyr2R5qK+a5HEw8+FIO9LVsT5fNJRMvo goaIZKR3myiMLpwAZvRUKimaSdanw5HN6Qn9d0HmwIHHrpYVLg2Kq/ae6Y1DBbAljnEg pwHzLy6HWWlVv/aps1dj+xtOQV6ercolDBxZIe0LvdG9tFiQgudtlvgTeqvv+mUkplZt HgfJtRXzStTJvGJOJaVuAsDwzlfC4qr/graOpYsrMkCxW12T1MVcyu/fb5cBw4R7wkEc h1+A== X-Gm-Message-State: AOAM533Ta02snuHvxcAJYOK8R0dsRXVTauJ42TBJYhi2N2O0Lbn9+NzV 8QK5VZh/dh0CDK9PxexNWKS7nQ9EfMg= X-Google-Smtp-Source: ABdhPJxJ9iyXQi7HJ8FElJttOTZBsESnGgPJlcEya9pvWEkOAtrcG1pmBttr40tyMannomyjlrVwOQ== X-Received: by 2002:a05:620a:24c4:: with SMTP id m4mr32883604qkn.114.1619655281508; Wed, 28 Apr 2021 17:14:41 -0700 (PDT) From: Nick Rosbrook X-Google-Original-From: Nick Rosbrook To: xen-devel@lists.xenproject.org Cc: Nick Rosbrook , George Dunlap , Ian Jackson , Wei Liu Subject: [PATCH 04/12] golang/xenlight: export keyed union interface types Date: Wed, 28 Apr 2021 20:14:26 -0400 Message-Id: <29a3fbc93262cb9b31f02d6c94c018b200dfa43e.1619655104.git.rosbrookn@ainfosec.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: <29e665fc1c9313f5e221e9e5e15d7c2d9c1eb4a7.1619655104.git.rosbrookn@ainfosec.com> References: <29e665fc1c9313f5e221e9e5e15d7c2d9c1eb4a7.1619655104.git.rosbrookn@ainfosec.com> 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 --- 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 Fri Apr 26 04:54:34 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=1619655317; cv=none; d=zohomail.com; s=zohoarc; b=QR1lJL+x5RPRoNmUljnqcOaYZKwSEXy5mMaxrXw6WR4CP5i4foC6d+/VO9GZligMh1nO6G1nnxS4duIZ6/clmxxiArLew5wcfljnxRI/RZcYBWlFscFvdm7u5zSavR7z1KBPc9SUC/o1kBZcOxlsvLXYjrtrDXbyV3udsUDATDg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619655317; 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=Ac+uttR9HdBcj//LuFt6LFXrniFLbSqoErwi0rDGX84EfAjVcfs/qHAkbRb4xVXNBahefuvCJFu49VOfKZl/Ghn3BuPoGX3z31q4xs4QwB5OSDDZJ/SuZGhqYFZWgRKAWyh4VYfsqlZ77RdmE81F8htov0Yuq7rerBpTg7RBA2E= 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 1619655317914491.7429730396716; Wed, 28 Apr 2021 17:15:17 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.119622.226230 (Exim 4.92) (envelope-from ) id 1lbuKe-0007N5-Rb; Thu, 29 Apr 2021 00:15:04 +0000 Received: by outflank-mailman (output) from mailman id 119622.226230; Thu, 29 Apr 2021 00:15:04 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lbuKe-0007Ms-Mb; Thu, 29 Apr 2021 00:15:04 +0000 Received: by outflank-mailman (input) for mailman id 119622; Thu, 29 Apr 2021 00:15:04 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lbuKd-00072A-U8 for xen-devel@lists.xenproject.org; Thu, 29 Apr 2021 00:15:03 +0000 Received: from mail-qk1-x733.google.com (unknown [2607:f8b0:4864:20::733]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id e524f946-e987-4ffd-935f-e56f2d0521ca; Thu, 29 Apr 2021 00:14:43 +0000 (UTC) Received: by mail-qk1-x733.google.com with SMTP id q136so44605561qka.7 for ; Wed, 28 Apr 2021 17:14: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 r185sm1021694qkf.78.2021.04.28.17.14.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Apr 2021 17:14: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: e524f946-e987-4ffd-935f-e56f2d0521ca 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=OKNJ37sxZCgorQWpDPLeSEJcBm6eJe3y/hN4NqQtbP7wif3VlS/ztMfU4dGIk//aqz htT7IKDGhQ583NfaDB43UTo75FfOKjbEDmDUI+2MDY/o36LjTKiTUNbDD1IosAnl9jJk yMSyJvw8Hp67O+KpoJ1V+8W/7V+qhrjsygpe3n2ab4pw4iAc4XbUq283x4ECQVykc6C0 0RGY0fnnttdZhTDp9Tkjg725E/HMCJJNn8UqU2hBkZuJgDB24+Ab5SYPJ67Bg2qPf9kk keUigpG40+MdYs+tR+ipH1ZNFYpH9fZYF2iGA7zBUfmm3BowguzFmXbHMXtlBxddoEyG sYKQ== 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=UM680fMaCB4R1ZXIHZawt3yRqVTqCFyWoTxBt3JndYHtMAKboyh6uaAJ/wYn77ipyo iU84jQCEmYV1auBJ0B4vtRJOMgyf/CIemX/U7o+omCUKtX5j0myOHxNMUSKs7b8UPkHd oO0Z1BqhDtVR0OEpge1YphAsVoSvfVmVX8txgr1NTMnoG6x47pkmLEjZFRst5YneFqsT 1XWDzZuEwMFd0V9uKfigqmukBC2w67GAaftU+lOsqjz7hGY7a6pR+qbJiVtK+aT0/Ynj KtFBBcMzc5ciTjxAja9Sc9tkbfOSQkWsgp8S6mPlWsOYY8VOO9Yk9KE5iDeOQs7U432Z Nfnw== X-Gm-Message-State: AOAM533syWJG0CgxXYnYgSJHYgzndRavzzcfhyV/l/sV+bct7BtVVM+w dA8MvxHLnMjcQdr4ooI08SlKbrZitk4= X-Google-Smtp-Source: ABdhPJwJCDwbqS4/N2++moiTvGiiZFQkUvJeGhOuRY3EcwdojMxZhZuIoPVa0twtVUM0W8GZgVzdIg== X-Received: by 2002:a05:620a:1025:: with SMTP id a5mr2345999qkk.395.1619655282448; Wed, 28 Apr 2021 17:14:42 -0700 (PDT) From: Nick Rosbrook X-Google-Original-From: Nick Rosbrook To: xen-devel@lists.xenproject.org Cc: Nick Rosbrook , George Dunlap , Ian Jackson , Wei Liu Subject: [PATCH 05/12] golang/xenlight: use struct pointers in keyed union fields Date: Wed, 28 Apr 2021 20:14:27 -0400 Message-Id: X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: <29e665fc1c9313f5e221e9e5e15d7c2d9c1eb4a7.1619655104.git.rosbrookn@ainfosec.com> References: <29e665fc1c9313f5e221e9e5e15d7c2d9c1eb4a7.1619655104.git.rosbrookn@ainfosec.com> 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 --- 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 Fri Apr 26 04:54:34 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=1619655326; cv=none; d=zohomail.com; s=zohoarc; b=CzrZyoQHkxOSYxC2KjPXevitYOT5Vj1DYlkitPNeoXjrkuph1FzgkEbXEZYHAY+PuUL22LC52kISAxRLm4gR4gU/BKPJT0bT/qPAnHPRiXBkGkyv9Hxxa+jx/eIseqNcSXAEt7m9Hh5EhcwYU8dCYiUgYS/pLmo/LaryPH1q7wA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619655326; 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=OwhInqsOgFfPjaaA8yKovZCcADABse8wR8fi2K25eNTuS4y65VjW0YAtEp4awerYCb5bclP2yGo+ZQAOUoduOR+jljrKYP+/ERyhYMQhSIu7QF+U3Mn3iGGaKmv/tRKzNchL1srKH0tcSOJEKheKMAaebTidXQaW6Y3OS70r+gE= 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 1619655326542816.5583301653155; Wed, 28 Apr 2021 17:15:26 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.119626.226242 (Exim 4.92) (envelope-from ) id 1lbuKk-0007Sz-7U; Thu, 29 Apr 2021 00:15:10 +0000 Received: by outflank-mailman (output) from mailman id 119626.226242; Thu, 29 Apr 2021 00:15:10 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lbuKk-0007So-1a; Thu, 29 Apr 2021 00:15:10 +0000 Received: by outflank-mailman (input) for mailman id 119626; Thu, 29 Apr 2021 00:15:09 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lbuKi-00072A-US for xen-devel@lists.xenproject.org; Thu, 29 Apr 2021 00:15:09 +0000 Received: from mail-qk1-x72e.google.com (unknown [2607:f8b0:4864:20::72e]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id e05fc5d8-357b-4cd6-bced-e529ee992f98; Thu, 29 Apr 2021 00:14:44 +0000 (UTC) Received: by mail-qk1-x72e.google.com with SMTP id u20so33409358qku.10 for ; Wed, 28 Apr 2021 17:14:44 -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 r185sm1021694qkf.78.2021.04.28.17.14.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Apr 2021 17:14: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: e05fc5d8-357b-4cd6-bced-e529ee992f98 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=AclHR21OF7DBtUfPmwFG5nF2yNdL/m8bAG9xxI9OZm5LV56D7PahB9o+EkUh+lJ1dS Aepx4S5e57N8dbC5L8oBIXDcDH7I7pLAq6nqXm7obVCofihKVHkjUYqgmor5unlU1Ti8 OPMQCNycctNYCK+q7jfWhFDRqiR6LxRg2c1+xx6IFa+63K9CsiIP2QH7y0Whr+j6u0By IT1bd8yGp5tACKa3cKLER/8+TYRJXopkR0qxicA7utA07w2Erm/plZ3/zR1zgBjGGpa2 0Vrh/8iXCRlDzG78wmeRC3ERblsDaqA36st1yjLYrsgsq4kla8zxm5F9+a7bLyrUaJVs Z01A== 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=b7AU9+PBFLgRRdQwEVdp6xdEfOsCdAtsgeoNKSauODlpJPpeCOLIi7ieM1b4+2UAsb Zdc37MlzbshfSy5ci4kWmXvNhc/aR89vZaGG25XECR0biXHVU27XWG2/duPEBWVvlhQH wC/vLmX6WPI9ZDRogTt1oqumJdr1OuCr/8Dxt+xvwCOOUsaUrV796Js6mgUNx68oek7I rNl+p2Qj0WboOUB/CzHB2j+O1X27gwbHE7CiAwgRoLiMU6s7H5V24HTfyDxK4buUYOEh KHLho/HjCx1u9FW90hCOglLnrs4L7uKMi5sVARx6yWedgRjdW793+P+qcMLDZnlQ7obr F/pw== X-Gm-Message-State: AOAM531ufoFzyaLSTpBI8r7tW8BuPGzCI1rj6Gr5Y/DflErrcpbFkTUW WvVawldMrCt4uf57kCQUCLuj5NMCF2k= X-Google-Smtp-Source: ABdhPJy6vRIJABOYIaT301DzlBZh8O3C4qFp+PzNGYvMjdaXD6KQhdnIOr4sqM+HtXvw6LKkum4cnA== X-Received: by 2002:ae9:f50b:: with SMTP id o11mr20255434qkg.19.1619655283507; Wed, 28 Apr 2021 17:14:43 -0700 (PDT) From: Nick Rosbrook X-Google-Original-From: Nick Rosbrook To: xen-devel@lists.xenproject.org Cc: Nick Rosbrook , George Dunlap , Ian Jackson , Wei Liu Subject: [PATCH 06/12] golang/xenlight: rename Ctx receivers to ctx Date: Wed, 28 Apr 2021 20:14:28 -0400 Message-Id: X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: <29e665fc1c9313f5e221e9e5e15d7c2d9c1eb4a7.1619655104.git.rosbrookn@ainfosec.com> References: <29e665fc1c9313f5e221e9e5e15d7c2d9c1eb4a7.1619655104.git.rosbrookn@ainfosec.com> 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 --- 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 Fri Apr 26 04:54:34 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=1619655326; cv=none; d=zohomail.com; s=zohoarc; b=XiSI/lLboiBSvJiFxhg64XXnDLFiK5WVYXKulR85FjOiBV1NSDmEh7V1Bg3XuohyYYDlBaDKyQ4GySy7ZcqioFzo31ArhZqDQNTbnRpb65weDEh8+cVlPO4jQRMAIimBdq/UtTydPlVPjlVcgf4WIvdaXqjrob65ccRMPCqgeCA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619655326; 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=IF80Z285WMVJRrnbYXj/r2hyXm5eMmyqMl9r2JLKFCvT/QQS//1JStyy5JF369ciyYagc20ZFz6Xrc3k0tB6TpCPDERk7MG5xVQtT2IzWaF4NqsWPShNnO8Fza6CvO5nlu4mA9Gm2VNWxaR0ViTlncZ3pGXJARIQemBw7t5nFL0= 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 1619655326632913.9914555092787; Wed, 28 Apr 2021 17:15:26 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.119631.226254 (Exim 4.92) (envelope-from ) id 1lbuKo-0007ZK-Nz; Thu, 29 Apr 2021 00:15:14 +0000 Received: by outflank-mailman (output) from mailman id 119631.226254; Thu, 29 Apr 2021 00:15:14 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lbuKo-0007ZA-Jj; Thu, 29 Apr 2021 00:15:14 +0000 Received: by outflank-mailman (input) for mailman id 119631; Thu, 29 Apr 2021 00:15:14 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lbuKn-00072A-Ue for xen-devel@lists.xenproject.org; Thu, 29 Apr 2021 00:15:13 +0000 Received: from mail-qk1-x72e.google.com (unknown [2607:f8b0:4864:20::72e]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 37bb3426-b71e-45e2-bc68-03a2f74e5d3c; Thu, 29 Apr 2021 00:14:44 +0000 (UTC) Received: by mail-qk1-x72e.google.com with SMTP id 66so26014683qkf.2 for ; Wed, 28 Apr 2021 17:14:44 -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 r185sm1021694qkf.78.2021.04.28.17.14.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Apr 2021 17:14: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: 37bb3426-b71e-45e2-bc68-03a2f74e5d3c 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=GnTD7+ioGmWtK61iTA0bx7cyHU0a79TZRJjUpxX7SJpCsngstCsdi8DNFAftO8wNct qdsunU3kYNZsykJBWeKY9spMoDYeZTlwDTrJg5/GttOrqKBg02GZnPcaktxDb3OPGdEj knlQn9X9yacB7NSIEouOOdQ/nIFAbH1jlrd+bAl05cFNz0xU4xUf4cjnhP2WWo4BXCUl vnwqEJmOto/5beyWSbfhiIq7ICi4KgPJqm3562XL8nWxBQnyXRX/JEkuoJRJcOHif0BN Oih51vEEyTJjO4eRNgQ/rrGNSzMqqNkM/8Nz0s3zceE86DnA+yXmOXjk264HW2uoevLo I4yw== 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=c9sZN3w70RzfS87gsYc4Kb9bz1ipUcCkk1pqCrwvd8NF+KH/I09EY16p2xrEiihFI/ K8rwcwCaYfHZ9LlscadZOgWpbY5ugn6VKtR6lPMbx7oYnAcX62e9JgHRQ0BVlkMp4eYi yVTIJXwGuZWQee8agpe5YOv3CgmeRsTFsdT8QvQgsrAja0mVaUbaEwTi1z9sknck3y8m y6v5EKnx3wvRTRKXcRtx5uVK83YL/VlRUw6Z2KxSPVtnHxZEWmg4UJpgnNdsogNtl3PO JH7L9tOy/R+0CZDy9krzgOLC8PfRB13Y1d9D6/A2QgXSkdOMjIKlwhrSRSI40+KBDdBv Ip5w== X-Gm-Message-State: AOAM530ApSorZxHeTCZxyTqpIiSheFNDiwQ3BIBQu+ViMOXg1aOzId+2 8oaFTqs8Bg6Rpiumz26kYnpC2Wobsvo= X-Google-Smtp-Source: ABdhPJzmlwZ2l6XQ2OEYQV12XIJkjXJHZ2yBLWVjPqShw9X6B6nDd+5PO1V3AVAs411HFMk1LjskBA== X-Received: by 2002:a37:492:: with SMTP id 140mr31742249qke.161.1619655284380; Wed, 28 Apr 2021 17:14:44 -0700 (PDT) From: Nick Rosbrook X-Google-Original-From: Nick Rosbrook To: xen-devel@lists.xenproject.org Cc: Nick Rosbrook , George Dunlap , Ian Jackson , Wei Liu Subject: [PATCH 07/12] golang/xenlight: add logging conveniences for within xenlight Date: Wed, 28 Apr 2021 20:14:29 -0400 Message-Id: <452aac2489990ac0195c62d8cb820fbe5786c466.1619655104.git.rosbrookn@ainfosec.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: <29e665fc1c9313f5e221e9e5e15d7c2d9c1eb4a7.1619655104.git.rosbrookn@ainfosec.com> References: <29e665fc1c9313f5e221e9e5e15d7c2d9c1eb4a7.1619655104.git.rosbrookn@ainfosec.com> 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 Fri Apr 26 04:54:34 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=1619655332; cv=none; d=zohomail.com; s=zohoarc; b=KLe4AJ0u5AyjaEdPEXN+zs8/3gb/2RlRAxWH77j1CgeYQf6LBRa7PGLZ2dfPXP4GOPc0/DcRH6Qt6TiBHa53mWQHWXZKsFrioy8gXHQKwmUNK5uXkAJqiX5Qnp/uFyTX+SzUMvI3pEEUVxNGJ1rWUpCeV5JCowOry3UmkavFrkY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619655332; 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=l31Cn3IoCKDp32GDUpCsRY+OE2vjTxYaQWi1RQ2yl21eUg4sbk5e+ubRwExLwog9taJZhTUr4o4+21RBl3NFug9FG5UWoZ8t2WLrayFFbCb97oUQ214XAUO6awNVq9+Lqr8TWqHLs1KXx00xwA4JnZIqmw3asmGHWKBzZfTDpB4= 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 161965533222115.23208427451118; Wed, 28 Apr 2021 17:15:32 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.119634.226266 (Exim 4.92) (envelope-from ) id 1lbuKu-0007fD-0N; Thu, 29 Apr 2021 00:15:20 +0000 Received: by outflank-mailman (output) from mailman id 119634.226266; Thu, 29 Apr 2021 00:15:19 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lbuKt-0007f3-T1; Thu, 29 Apr 2021 00:15:19 +0000 Received: by outflank-mailman (input) for mailman id 119634; Thu, 29 Apr 2021 00:15:19 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lbuKs-00072A-V0 for xen-devel@lists.xenproject.org; Thu, 29 Apr 2021 00:15:18 +0000 Received: from mail-qk1-x734.google.com (unknown [2607:f8b0:4864:20::734]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 386a6d89-0e87-4b8b-8b32-2cc2046bbd63; Thu, 29 Apr 2021 00:14:45 +0000 (UTC) Received: by mail-qk1-x734.google.com with SMTP id z2so28593406qkb.9 for ; Wed, 28 Apr 2021 17:14: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 r185sm1021694qkf.78.2021.04.28.17.14.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Apr 2021 17:14: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: 386a6d89-0e87-4b8b-8b32-2cc2046bbd63 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=X3RpbNRLFIasvagDXGGPh4iUBDU69CrFMYzRIyLErGYCEdZ/F3ViE3SE66plN6a5Es gQkA6VfDpOKa+gfrhuUgEQqg0s3s40nSIS0TD3SKMmysMLO81KwfJelOvzVR/RmrX6cQ DYx9BKcFLihTy9DxumdgX4q5TTVzgoqJZcwTSPMFIi6nsa/0EBoxCmDlGmviX/RMozqb R/jrQU19YigGSDaIQJgF2vtl0vhDSvVydYT8kUALZT9MBoxn2zyyhzDNkhXrl8B4IvFZ TMiNDUapu0vrLGPlIa+fa3zAPGUy8OJ03glUmg8F2pe3wgirARY73Gk192qkx1ImG9Kz H4rA== 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=NAPg34CgIfU0i5z8vvzL6l5VBDcrl6r0rMdq0IK0a6FLk71vEydQ29IQyh/0s9UGzq 1VInsBCNBuZfKEVhfOaW8UnnvyubYfjyFmVjC979q0cm29ZRVtItcmlpX1I5c9Vc3zYK KhK8bla3mfcVWJQJbBlID7gMrD2Qv42VI1ykENqV5TTF/8UQLV0XXTA+yASFXMefiL0N Qo4bmr3ywxTKmX4sKCmNhx/FVRBcs8TClMdx0yuysHxa2J9whcu/NudYQwvnbYIC1KTL sgmYpWeTqqjz3JuN3GDahmAry75DqT6OOxoD+n+iTwDemPGIv7yDTFCoZRzmOerf/WbN OEOA== X-Gm-Message-State: AOAM531zPF0Cm4R673pW/vnebAFeTesIHxbS+S0ZBPu+jBEOfhbdQvH2 o6TYSQDfxHn7DqSSoUUTi8IWhkr5fbQ= X-Google-Smtp-Source: ABdhPJwd6DikwTnvprfp3pacBRfo7u3DzsZpMRnz89VqwVPX1hHAa4qPM5XCgXmkwZii7SBHi9g5wA== X-Received: by 2002:ae9:ebd1:: with SMTP id b200mr31607745qkg.200.1619655285229; Wed, 28 Apr 2021 17:14:45 -0700 (PDT) From: Nick Rosbrook X-Google-Original-From: Nick Rosbrook To: xen-devel@lists.xenproject.org Cc: Nick Rosbrook , George Dunlap , Ian Jackson , Wei Liu Subject: [PATCH 08/12] golang/xenlight: add functional options to configure Context Date: Wed, 28 Apr 2021 20:14:30 -0400 Message-Id: X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: <29e665fc1c9313f5e221e9e5e15d7c2d9c1eb4a7.1619655104.git.rosbrookn@ainfosec.com> References: <29e665fc1c9313f5e221e9e5e15d7c2d9c1eb4a7.1619655104.git.rosbrookn@ainfosec.com> 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 Fri Apr 26 04:54:34 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=1619655336; cv=none; d=zohomail.com; s=zohoarc; b=XBkloACto8X5q3EDYgNIaQix9Og1UkCa043y5PX3rVNxLnUnhTYwDwlLi9yTfLG0MeX/coOI+/E0hOZMgMPVSGrshMd+sPfzGasaPewrst3PEkOyeI2UErdWEWaEY8KtosD1pgtsFkfr95tTLK6/tCaitskxaIkP+8/iX15/MCg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619655336; 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=dMsVoTLkROyEViWNTgRsEdziQo1lEwjgrEFsNQEIeIffDgUqHb2X17bbkC8RPA4Jo8kMbJOfFgh22/HpOA0ih104tbn5UrBa99Z+lFOt+l86EBt0tioL/I2ItVvwfBnbzTUqdTa/Y7ki82M+/OS2VzLlcdULrOfKYzsbT7l11u0= 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 1619655336292309.5700950043663; Wed, 28 Apr 2021 17:15:36 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.119637.226278 (Exim 4.92) (envelope-from ) id 1lbuKz-0007lw-Ds; Thu, 29 Apr 2021 00:15:25 +0000 Received: by outflank-mailman (output) from mailman id 119637.226278; Thu, 29 Apr 2021 00:15:25 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lbuKz-0007lk-7N; Thu, 29 Apr 2021 00:15:25 +0000 Received: by outflank-mailman (input) for mailman id 119637; Thu, 29 Apr 2021 00:15:24 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lbuKx-00072A-V3 for xen-devel@lists.xenproject.org; Thu, 29 Apr 2021 00:15:23 +0000 Received: from mail-qk1-x736.google.com (unknown [2607:f8b0:4864:20::736]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id fb983bb6-d786-472c-a295-f9d1d4d9f0d2; Thu, 29 Apr 2021 00:14:46 +0000 (UTC) Received: by mail-qk1-x736.google.com with SMTP id v23so13535198qkj.13 for ; Wed, 28 Apr 2021 17:14: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 r185sm1021694qkf.78.2021.04.28.17.14.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Apr 2021 17:14: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: fb983bb6-d786-472c-a295-f9d1d4d9f0d2 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=A3V+fBzZ4EoTKzTgolB/bZYw7Klk1qmndxu6OOWrHZBriH848HFpj4AEu43ZxF6Wmu yJpX+j6noOzGf1wgdYy3RhjwQj00aM7xzUVHjm7Q2kvLaNn4A/hVr3C1qjD+JJoZJcFS 1LV+PiN6qBjgxBvVbDhf0xSu21N2oTVt7vF/YFRO/usUXBq5+8MrYTzUF4usUW4WHWkh 2BMD+FbmZtTpNZDA19k1gbq+cgzcCKlbGLhRSf+IMdDCje/Q+KrXRXJwXhmjJKIAggXC NcGWgKJz0pRGyDVauXBKuz9/ohr0d54QDKyAj+KnGZKR/ypEa5frxpJ0FQ/+Deagxuvr g/4w== 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=ca19crPCNWirTcF190tfRmB+J/3NcE6Dp/gUjHoX1bZqHWht058DVfwexiskjgnbRy b6K+RBwdmvYkWOYKHnWfJn5x01avan9WROV07iv4WnUxP2Miw8xUrJrtN6yP53QWrsiY RA7q3fUQZm5dMryZjj4psL/JyTlH/28KU4U3zx5gxbexqJYnpYMcN4+wbQCtQZXWJyrD T3SifoyTjwMapAL/mNFdgXcCBNJQk0D1BYONLVQ0tyRJHTwjs5jEqLpH3wh+kiHRwX3l sfwZWjJHLpdeuHTP3p/Yxmrrpzvu90IcSwEKtCTkuNmTaKB3Ob0YKvzcZVqSX60/wk1t H15g== X-Gm-Message-State: AOAM532sin4EU3OiQ7oRmCKusYBaBqrf8ZE3p4RCvyW7PVeOO3SBo2wj OZN+JI2Ez5KqWtd4DQhXIg9mxsj5bNc= X-Google-Smtp-Source: ABdhPJz213UIAeTBYH23T7QfFdK82E35bw+YhB4TQXfha7S9X87I0gsA002TsDpf/HqtYHz4Gy5emw== X-Received: by 2002:a37:b807:: with SMTP id i7mr31446519qkf.126.1619655286335; Wed, 28 Apr 2021 17:14:46 -0700 (PDT) From: Nick Rosbrook X-Google-Original-From: Nick Rosbrook To: xen-devel@lists.xenproject.org Cc: Nick Rosbrook , George Dunlap , Ian Jackson , Wei Liu Subject: [PATCH 09/12] golang/xenlight: add DomainDestroy wrapper Date: Wed, 28 Apr 2021 20:14:31 -0400 Message-Id: <82c68547f4cec1c82132cd6a867696f4b38dcd3d.1619655104.git.rosbrookn@ainfosec.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: <29e665fc1c9313f5e221e9e5e15d7c2d9c1eb4a7.1619655104.git.rosbrookn@ainfosec.com> References: <29e665fc1c9313f5e221e9e5e15d7c2d9c1eb4a7.1619655104.git.rosbrookn@ainfosec.com> 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 --- 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 Fri Apr 26 04:54:34 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=1619655909; cv=none; d=zohomail.com; s=zohoarc; b=KcLxR5MNbgqh6LhcMJtBtAC1IKpKieJK1lLaur7+oQc5bVZhstrhUZLJDlCyKs/J3i/ie7IEB3no2G6/jx211t/Jo02Rl0OH1SJ7NI/4ursf1XgzXBwgxkzqyRfrHLyLdKqkWmRRdFnLzTComNrfj0oKYPalzXcO7/CYudPTp3k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619655909; 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=DBZGIk3Vz9rNiQyi37euTOv3plFAXjT8dq9tMEdJi16qaZ3/hgM8RJvbub6QHEr+YqzQFua7dEskPk57pSQijJ24ZR/zFAuXuRUOTFBdhcgEyOx2JlgSdbwzEXpYxOPCYBrA7x+ykdtHygGEeVbeAKdZPgRSoHT/kUMRR9H5DWE= 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 1619655909726375.074294093209; Wed, 28 Apr 2021 17:25:09 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.119681.226314 (Exim 4.92) (envelope-from ) id 1lbuUF-0000j8-1W; Thu, 29 Apr 2021 00:24:59 +0000 Received: by outflank-mailman (output) from mailman id 119681.226314; Thu, 29 Apr 2021 00:24:59 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lbuUE-0000iy-Tv; Thu, 29 Apr 2021 00:24:58 +0000 Received: by outflank-mailman (input) for mailman id 119681; Thu, 29 Apr 2021 00:24:57 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lbuL2-00072A-V6 for xen-devel@lists.xenproject.org; Thu, 29 Apr 2021 00:15:28 +0000 Received: from mail-qk1-x72e.google.com (unknown [2607:f8b0:4864:20::72e]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id b6b165b2-64d5-4b58-8b10-6fffed4de8e4; Thu, 29 Apr 2021 00:14:47 +0000 (UTC) Received: by mail-qk1-x72e.google.com with SMTP id 8so31839670qkv.8 for ; Wed, 28 Apr 2021 17:14: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 r185sm1021694qkf.78.2021.04.28.17.14.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Apr 2021 17:14: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: b6b165b2-64d5-4b58-8b10-6fffed4de8e4 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=BMp2XQVr6/Bk3JgUr4BuYQ6V1vk9K5+ShWTeHPcy8TPZveeNr2e4hoxAx5pRsCyCAe +U2/nEIjSpAgjEK39Os+Ei/AIrfEVuRQHwfhb+C2FyH+XHP8uefypULwaF/as/Y7bcgz kDHfGU4FWK+J3qAiJIwAl80G3x6V9nvxX8Ll3S2XV0jqg6yo8TBdzYFg2ua7L/2lojXc 0xPwsW+hSGsZa4hMIWq/jE6RwP5lXr9MFEL40QGxI8Q4Mi50xpz8sVVAreTJjwXf41/Z 7xt4mbzrcJ5Y4+KaPTBKY1eDylgcm0gYHlQEjfYUXGoYUagpAYKOzBJ/wBiHx7WeQXTJ TSOg== 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=fCaU2d8snhpABUxmghvEF7vi3ogLhSh8BzxsehX0OHTk4s8Hrt9rYIJCfnGmhgTtYz TH486xX2fgbHj+XxdRlnBQm8S+WaUdFsFOCE1tLShw8DeR2ODaLc4RfxAiuvCqCCiz2d Ne1ru/ds6q7ZRN62C4RmHhk3JfbOoLbHpImagvUvQqUbLkz4g7KSUEvEASEGpRzUB6rw rjgTCK55UAWfrnjIhRyVkGcGVUK2y+TzOVPhnQvUThjyrHCLYCZZ6wEeGmi+qUp/lMtw cUSItvtvQH6q8u4vmpOs+JvpuIWTF8F0EnGgFUs5SmMa7TuvIjH5hBZC15AbyFvn8ON7 ZTTA== X-Gm-Message-State: AOAM531Z/5j0LnmAQGj0T0TmowssM2yhODdRN9dsCsuyXCxZsDUIw5lj HNT6eqA1IF6mNN5AIREo17O6s1psCaE= X-Google-Smtp-Source: ABdhPJzH0CL1HcR82zMaOQdo32G8QM+l2xu/U9sGBjsc7/PfvshIqGFyz6KDHUQQ11ZD8BiaaQolvw== X-Received: by 2002:a37:a90a:: with SMTP id s10mr31041821qke.63.1619655287219; Wed, 28 Apr 2021 17:14:47 -0700 (PDT) From: Nick Rosbrook X-Google-Original-From: Nick Rosbrook To: xen-devel@lists.xenproject.org Cc: Nick Rosbrook , George Dunlap , Ian Jackson , Wei Liu Subject: [PATCH 10/12] golang/xenlight: add SendTrigger wrapper Date: Wed, 28 Apr 2021 20:14:32 -0400 Message-Id: <7788e3f5f1af622782ede1b879f4f02ec63fa546.1619655104.git.rosbrookn@ainfosec.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: <29e665fc1c9313f5e221e9e5e15d7c2d9c1eb4a7.1619655104.git.rosbrookn@ainfosec.com> References: <29e665fc1c9313f5e221e9e5e15d7c2d9c1eb4a7.1619655104.git.rosbrookn@ainfosec.com> 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 --- 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 Fri Apr 26 04:54:34 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=1619655905; cv=none; d=zohomail.com; s=zohoarc; b=PwSIkAjRwrX5GVWhr1fAoHAMsok2Hly6BIztWmjZjMmuC8Lfmz9fH1jYNRlUoTlzc0AR5x7oQqh9jPIUitFKn9hR3Sud3FuTLaBTwuCnHBqfs0W+0/cswFgbgSAbwYBvXiZlMwlNM4W7oCSwU7BFKtJgyYIFJKP5cQrcE8fJMfQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619655905; 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=NFiR8ZNNT3vD+dC6hgu/Xy4QtnFlahlGqfVvI+eLyDpEaR/8L/GOtvfcOnHamReq/EGke+nUaBUJ3YeSfHvjbC7pthBN7RZGcLNaj7L9nn2yX1rHWQ7SO6pDUdd7G+lpfD1J0mBZS6kwez8B8XuXwhkmYTY1j+JHTdVUDmQ28vE= 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 161965590597057.08789010136559; Wed, 28 Apr 2021 17:25:05 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.119678.226290 (Exim 4.92) (envelope-from ) id 1lbuU4-0000bx-Bc; Thu, 29 Apr 2021 00:24:48 +0000 Received: by outflank-mailman (output) from mailman id 119678.226290; Thu, 29 Apr 2021 00:24:48 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lbuU4-0000bq-8V; Thu, 29 Apr 2021 00:24:48 +0000 Received: by outflank-mailman (input) for mailman id 119678; Thu, 29 Apr 2021 00:24:47 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lbuL7-00072A-VB for xen-devel@lists.xenproject.org; Thu, 29 Apr 2021 00:15:33 +0000 Received: from mail-qk1-x72f.google.com (unknown [2607:f8b0:4864:20::72f]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 8575b3df-66e4-428c-9981-ed711e13a6d6; Thu, 29 Apr 2021 00:14:48 +0000 (UTC) Received: by mail-qk1-x72f.google.com with SMTP id o5so65593965qkb.0 for ; Wed, 28 Apr 2021 17:14: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 r185sm1021694qkf.78.2021.04.28.17.14.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Apr 2021 17:14: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: 8575b3df-66e4-428c-9981-ed711e13a6d6 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=WuagplF/N+6Qq3E3bKSharLO65EdAjIlxj0a/hc7jj5kuwpyBG1FZx14nl01G5YTCq LHhx+jn0FnfUtRbj4/xtTRPICM+M2YM7N30iH1B0utAd7t1sB73yZSNu9wjXl2w5+Xh4 AW396aY11QYihqi1MV7Fu495FGeyyN2gjzl1xgLLS6MKZTNkMt4t7gnuayA6rVbOyKLk +7vKsndChV4728Zbr8rWg8uWZRYgzhfrhjvw+UNQOmVoZICskbdvA5ZtM9ZLxRDgZ0eA FElsAcFCCGetVd0MOIioW7qOvXJ4Bts4JJ5vEJ/ibUq6RcJ8x4o8PidJk2Mg1PPNyTH+ YQyA== 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=p/DcpLka2CRs0rinA5iVlWRim+33zpzEyi1kfHFLzN0fnqJhPOpE9U7SlTiUZXJ/IX 7kpPNI3pCyKBmGq94cqi3l220/Ad1AJA5Q5XFIZE0o3gxtu7vwQb+MzrrImoNCNAwF/B KRGDMOFKe9jHPWJn3oaFhUi13IAAV5bZ9PH84lw8raRwq0GX6zRy8tQd+oxDlONg1P8+ nMsFL2N2TB6/R4j+8S3rRhjAJzikSkQ31j3j0n0ZEucGC6tyPO4JAGYeP384drLzEgXm 0isezo9OarSO6Cpw88pMa905LBZKvGYFeguxeASqL09QKwYUCdJBMRAcsO1Z4qQKvHF4 +0Cw== X-Gm-Message-State: AOAM531H/VO2PjR/jjgFK0a+mBZNrM12kvSWGjgSuRzKaEqU2jp7F5W0 Ya57+eu+0V2/yxzfVK7iJHWDyIHMtlA= X-Google-Smtp-Source: ABdhPJxDHHI9SX8SkOYc/LaA6GkpLiaYOCLPx1hZghaJbVgf3Qube0QSBLyc+Ww/Bu6L15GUalEg6A== X-Received: by 2002:a37:6249:: with SMTP id w70mr24335100qkb.99.1619655288147; Wed, 28 Apr 2021 17:14:48 -0700 (PDT) From: Nick Rosbrook X-Google-Original-From: Nick Rosbrook To: xen-devel@lists.xenproject.org Cc: Nick Rosbrook , George Dunlap , Ian Jackson , Wei Liu Subject: [PATCH 11/12] golang/xenlight: do not negate ret when converting to Error Date: Wed, 28 Apr 2021 20:14:33 -0400 Message-Id: <82bc8b720c3dfb178e52d10ddbebfa8dc5880e7b.1619655104.git.rosbrookn@ainfosec.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: <29e665fc1c9313f5e221e9e5e15d7c2d9c1eb4a7.1619655104.git.rosbrookn@ainfosec.com> References: <29e665fc1c9313f5e221e9e5e15d7c2d9c1eb4a7.1619655104.git.rosbrookn@ainfosec.com> 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 --- 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 Fri Apr 26 04:54:34 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=1619655907; cv=none; d=zohomail.com; s=zohoarc; b=FAr2dslYuBLmfZ3ow0mgvHqg2fVOX7IJNqSEifGV5KjQB9cExn80QuO0j5tGAEAWPj7gvVbAQip0NW7sGKSVFvJn86+wVU0EdV6GKj2cx/14iEQsvshuaD5nEFf+fZUsdctCN7Fxp+JQ4bk8FPRJZPKtNlkcv7pzvA4MNRObmXY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619655907; 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=G9aFQFQetWHXhRWndu8XlCxf8B1HiTW+0PiUz3a3sfFZnhWPUiv+QfapTupuZbaAa+hBY/vCt/NOC90dYeeFMmkibSwgKrMk82pKv3dBhbdx+ZpjaERnTA1akN/Qp152GQSzMRJSNZvi9wiWu4xNGdzXJfmdahmfAHCzac+ZsZg= 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 1619655907014234.6074873220524; Wed, 28 Apr 2021 17:25:07 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.119679.226296 (Exim 4.92) (envelope-from ) id 1lbuU4-0000cO-LX; Thu, 29 Apr 2021 00:24:48 +0000 Received: by outflank-mailman (output) from mailman id 119679.226296; Thu, 29 Apr 2021 00:24:48 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lbuU4-0000cH-GP; Thu, 29 Apr 2021 00:24:48 +0000 Received: by outflank-mailman (input) for mailman id 119679; Thu, 29 Apr 2021 00:24:47 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lbuLC-00072A-VU for xen-devel@lists.xenproject.org; Thu, 29 Apr 2021 00:15:39 +0000 Received: from mail-qk1-x733.google.com (unknown [2607:f8b0:4864:20::733]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 7791350c-8fd4-4740-ba4f-cc1d7a80a2d8; Thu, 29 Apr 2021 00:14:50 +0000 (UTC) Received: by mail-qk1-x733.google.com with SMTP id q136so44605762qka.7 for ; Wed, 28 Apr 2021 17:14: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 r185sm1021694qkf.78.2021.04.28.17.14.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Apr 2021 17:14: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: 7791350c-8fd4-4740-ba4f-cc1d7a80a2d8 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=Wmm7rj/vyt50koaS67R5V5VtQ04AK9utAPe54iBby3oY7Cy+nLzkYQ1rwyKaigciEN 0RT4FZX6lVOgNpi9JtuICBw+qRFZbU/KRgXiHbEn8+vqGBEhtj+LqEqba/AU1fHfwW1m eaYltcHWDFyLDU5Ob2Z87zERdA6lkDZX6VcV+YVGq9cMbHOyD7FY71qg9oTScdipxcGV KRXlBdc8QoPG8euVyHhq/7lmFBKuFC+GQTmf45ukF8/dg3+z8EGtvhZ+uZod6L4Zu9+Y B7sWhTKdiBsdqxuL0FwhjbBy9KOrXIat+bE1P/NqqJeFfCabyBDRKFZpjvkWt6K3QsIt i95g== 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=jWgPym+CFm4Oh1PclF7l2zhJObbDKVBIaHYff9BpaMVgEV3KfUEdT7fZU2ixbV94dF tdo3RIWXbof7UDGlM1h8cdwMkplyZS+uaFgcOVJpE09hCgzSDSbuiBEx/p9jF9t66Kju QHN2zklln4A8TYt984VJ+ofcGRfV+5cF6bkgMbh6sYoG4kx38fZJp+TK91rQBfbqxRCo QmOUWF/MIRK5sSBWpIxgaRaWRjkBaI5R+8oQ2NJg6ZszOFZ4LnNkGDfsnoIbKNDPbJG+ rCFoBJ/Edluml2nTwFNKWa0lzpzWfqFMKmKfNijUBNq+F/z1WTMeAvo/fiUIhtlauCZd lPww== X-Gm-Message-State: AOAM533zaWkMvT3246Os3Jp9WvoZHLpVnoruNvvzMxalhUpK5pTWKHWV y7WaiAxzULJjwsne/QiPMwhvTbUR6EA= X-Google-Smtp-Source: ABdhPJwqF5FqnlBcGP5vzfDZED1P0vTiFUV/Etl+1E4/OMgfLzLyiP/fs3umjbOR+C2uVj88o022Mg== X-Received: by 2002:a37:a1d5:: with SMTP id k204mr32185392qke.164.1619655289437; Wed, 28 Apr 2021 17:14:49 -0700 (PDT) From: Nick Rosbrook X-Google-Original-From: Nick Rosbrook To: xen-devel@lists.xenproject.org Cc: Nick Rosbrook , George Dunlap , Ian Jackson , Wei Liu Subject: [PATCH 12/12] golang/xenlight: add NotifyDomainDeath method to Context Date: Wed, 28 Apr 2021 20:14:34 -0400 Message-Id: X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: <29e665fc1c9313f5e221e9e5e15d7c2d9c1eb4a7.1619655104.git.rosbrookn@ainfosec.com> References: <29e665fc1c9313f5e221e9e5e15d7c2d9c1eb4a7.1619655104.git.rosbrookn@ainfosec.com> 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