From nobody Mon Feb 9 12:11:14 2026 Delivered-To: importer@patchew.org Received-SPF: none (zoho.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=none (zoho.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1573847277; cv=none; d=zoho.com; s=zohoarc; b=O9VvoSCch1fm1crlo2bqdmn0WJENlnV27/kIoK1h0ebUOj6K4XN1ia82f99fWwAeSLRVSIkHwLhvvJDDKrw2gRocy19kJ96++LLx6ZWItHwWJvqy5Bjw9VHm1TL61BZS7W/nk0jtOLuSyQTVmtdjD+wS7bIGncSXFwIsTo76oLA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573847277; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=QvESH+uInWPzdUKEBwpzRPEbX2rHGig3BA8zerlMJgw=; b=KGG15cUGblSKU4HZhDMwxLjRtI73Fco7QVD3aRXYLQl3lj9ITGXa3dGYLaCr4M5+9KLFVoLPnSAdmwN8mbtian6lX5lS7JUlD/0vNa4+HzjqGbJVEmomXh+Mbs16P05w0R/N7RaMj6tCTCGgGbY85uW6qarT/nx1P8+jB/ZVV6g= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=none (zoho.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail 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 1573847277593350.8253417295192; Fri, 15 Nov 2019 11:47:57 -0800 (PST) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iVhYB-0002LF-OW; Fri, 15 Nov 2019 19:46:35 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iVhYA-0002Jy-QQ for xen-devel@lists.xenproject.org; Fri, 15 Nov 2019 19:46:35 +0000 Received: from mail-qk1-x733.google.com (unknown [2607:f8b0:4864:20::733]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 761407f4-07e0-11ea-984a-bc764e2007e4; Fri, 15 Nov 2019 19:45:22 +0000 (UTC) Received: by mail-qk1-x733.google.com with SMTP id i19so9061956qki.2 for ; Fri, 15 Nov 2019 11:45:22 -0800 (PST) Received: from five.crux.rad.ainfosec.com (209-217-208-226.northland.net. [209.217.208.226]) by smtp.googlemail.com with ESMTPSA id y10sm4649679qkb.55.2019.11.15.11.45.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Nov 2019 11:45:19 -0800 (PST) X-Inumbo-ID: 761407f4-07e0-11ea-984a-bc764e2007e4 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 :mime-version:content-transfer-encoding; bh=ChCdLalS+VOn9D0Tkq8ZoGYVxfZI4uz2HF7GuR2aDfk=; b=ebKf5rVvymD0OJGEGGui5NaDkxiDkXZXRdsnu27EOFx8q+X+Ia85fmQ7p5iKMjtFUC VnBqMflSiJzmAZADPmHeMis/NWtQQv0NlEx7B4jted2LifayQOEXrsTWmhiGu03g4WK4 AD8TyJqQJL/rY0W1i8djzbpmgYYfYdAVo1EY6wSFEGvkFTxjx3YZEwobIr06eWkX7ZRY RfzJQDmsba1YYLlSuob1AThfT8dkVKwxWvbqsbR/N7aeTthz14Q5uNG3FcziiAJZQvmC rGybq5bDmz4NgXNRo8xmHF3DzJZpBGxZsCoOoR+A3hUwVFsdbJXyqbjEPk1iXVN91D6F 5TJQ== 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:mime-version:content-transfer-encoding; bh=ChCdLalS+VOn9D0Tkq8ZoGYVxfZI4uz2HF7GuR2aDfk=; b=N9SyVC+/8NIb/hdfuIwtWbnOoowzAZqA2zE/ibsHh2lP8twxdS82LzOmvjuZr+bTI8 Kcid9dbsibvhwOJZPbRTrOfbBQMlfGk7KoxPrIug0w2tDQRQluHGoRaHQR7HdHKn1/eH shdrhV7V+yi8JGHwZXwRpYy1h+KBgvIx/uASU/ER5LPBgHWTl2IJVCFEW+nmvrtuzv2F rmzq1r6ePLfsbX7WUc8aZrEd+xB24HR+oeSZ9M01Lc/yooUF/gKc1rIjb8AoDWPq0paB jaZIqDLPM+nXiIgJuGqrupkybIiS9oHT+KoZZMI3GsEzERSGr2EIS/hcFQhBnX4utTvV s5qw== X-Gm-Message-State: APjAAAUKqvMbIC3Vg/29cYr7nVyY8UAVtaJL2A8tFWr/MAW0ddiaJuAA VhwD4jsYBdB6p9vrfJY/oYHnDoHv X-Google-Smtp-Source: APXvYqytTgWi+X0gShJl1C3A68G5QyVV3o0H8ufGw4joP48AgSNMRnSKI+04jHW8gNRprDnjfSik1A== X-Received: by 2002:a37:4bc2:: with SMTP id y185mr14081651qka.10.1573847120719; Fri, 15 Nov 2019 11:45:20 -0800 (PST) From: Nick Rosbrook To: xen-devel@lists.xenproject.org Date: Fri, 15 Nov 2019 14:44:25 -0500 Message-Id: <326606957641c2e0f9fe2f15553b08cf7ddaedec.1573840474.git.rosbrookn@ainfosec.com> X-Mailer: git-send-email 2.19.1 In-Reply-To: References: MIME-Version: 1.0 Subject: [Xen-devel] [PATCH v2 18/22] golang/xenlight: begin Go to C type marshaling X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Nick Rosbrook , Ian Jackson , kerriganb@ainfosec.com, George Dunlap , Wei Liu Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) From: Nick Rosbrook Implement conversion of basic type conversions such as strings and integer types in toC functions. Signed-off-by: Nick Rosbrook --- tools/golang/xenlight/gengotypes.py | 80 ++ tools/golang/xenlight/helpers.gen.go | 1015 ++++++++++++++++++++++++++ 2 files changed, 1095 insertions(+) diff --git a/tools/golang/xenlight/gengotypes.py b/tools/golang/xenlight/ge= ngotypes.py index 7083ccc871..1522633f83 100644 --- a/tools/golang/xenlight/gengotypes.py +++ b/tools/golang/xenlight/gengotypes.py @@ -241,6 +241,9 @@ def xenlight_golang_generate_helpers(path =3D None, typ= es =3D None, comment =3D None): f.write(extra) f.write('\n') =20 + f.write(xenlight_golang_define_to_C(ty)) + f.write('\n') + go_fmt(path) =20 def xenlight_golang_define_from_C(ty =3D None, typename =3D None, nested = =3D False): @@ -478,6 +481,83 @@ def xenlight_golang_array_from_C(ty =3D None): =20 return s =20 +def xenlight_golang_define_to_C(ty =3D None, typename =3D None, nested =3D= False): + s =3D '' + + gotypename =3D ctypename =3D '' + + if typename is not None: + gotypename =3D xenlight_golang_fmt_name(typename) + ctypename =3D typename + else: + gotypename =3D xenlight_golang_fmt_name(ty.typename) + ctypename =3D ty.typename + + if not nested: + s +=3D 'func (x *{}) toC() (xc C.{},err error) {{\n'.format(gotype= name,ctypename) + s +=3D 'C.{}(&xc)\n'.format(ty.init_fn) + + for f in ty.fields: + if f.type.typename is not None: + if isinstance(f.type, idl.Array): + # TODO + continue + + gotypename =3D xenlight_golang_fmt_name(f.type.typename) + ctypename =3D f.type.typename + gofname =3D xenlight_golang_fmt_name(f.name) + cfname =3D f.name + + # In cgo, C names that conflict with Go keywords can be + # accessed by prepending an underscore to the name. + if cfname in go_keywords: + cfname =3D '_' + cfname + + # If this is nested, we need the outer name too. + if nested and typename is not None: + goname =3D xenlight_golang_fmt_name(typename) + goname =3D '{}.{}'.format(goname, gofname) + cname =3D '{}.{}'.format(typename, cfname) + + else: + goname =3D gofname + cname =3D cfname + + is_castable =3D (f.type.json_parse_type =3D=3D 'JSON_INTEGER' = or + isinstance(f.type, idl.Enumeration) or + gotypename in go_builtin_types) + + if is_castable: + # Use the cgo helper for converting C strings. + if gotypename =3D=3D 'string': + s +=3D 'xc.{} =3D C.CString(x.{})\n'.format(cname,gona= me) + continue + + s +=3D 'xc.{} =3D C.{}(x.{})\n'.format(cname,ctypename,gon= ame) + + else: + s +=3D 'xc.{}, err =3D x.{}.toC()\n'.format(cname,goname) + s +=3D 'if err !=3D nil {\n' + s +=3D 'C.{}(&xc)\n'.format(ty.dispose_fn) + s +=3D 'return xc, err\n' + s +=3D '}\n' + + elif isinstance(f.type, idl.Struct): + s +=3D xenlight_golang_define_to_C(f.type, typename=3Df.name, = nested=3DTrue) + + elif isinstance(f.type, idl.KeyedUnion): + # TODO + pass + + else: + raise Exception('type {} not supported'.format(f.type)) + + if not nested: + s +=3D 'return xc, nil' + s +=3D '}\n' + + return s + def xenlight_golang_fmt_name(name, exported =3D True): """ Take a given type name and return an diff --git a/tools/golang/xenlight/helpers.gen.go b/tools/golang/xenlight/h= elpers.gen.go index abdbae1dc7..495601f738 100644 --- a/tools/golang/xenlight/helpers.gen.go +++ b/tools/golang/xenlight/helpers.gen.go @@ -130,6 +130,13 @@ func (x *IoportRange) fromC(xc *C.libxl_ioport_range) = error { return nil } =20 +func (x *IoportRange) toC() (xc C.libxl_ioport_range, err error) { + C.libxl_ioport_range_init(&xc) + xc.first =3D C.uint32_t(x.First) + xc.number =3D C.uint32_t(x.Number) + return xc, nil +} + func (x *IomemRange) fromC(xc *C.libxl_iomem_range) error { x.Start =3D uint64(xc.start) x.Number =3D uint64(xc.number) @@ -137,11 +144,25 @@ func (x *IomemRange) fromC(xc *C.libxl_iomem_range) e= rror { return nil } =20 +func (x *IomemRange) toC() (xc C.libxl_iomem_range, err error) { + C.libxl_iomem_range_init(&xc) + xc.start =3D C.uint64_t(x.Start) + xc.number =3D C.uint64_t(x.Number) + xc.gfn =3D C.uint64_t(x.Gfn) + return xc, nil +} + func (x *VgaInterfaceInfo) fromC(xc *C.libxl_vga_interface_info) error { x.Kind =3D VgaInterfaceType(xc.kind) return nil } =20 +func (x *VgaInterfaceInfo) toC() (xc C.libxl_vga_interface_info, err error= ) { + C.libxl_vga_interface_info_init(&xc) + xc.kind =3D C.libxl_vga_interface_type(x.Kind) + return xc, nil +} + func (x *VncInfo) fromC(xc *C.libxl_vnc_info) error { var defboolEnable Defbool if err :=3D defboolEnable.fromC(&xc.enable); err !=3D nil { @@ -159,6 +180,24 @@ func (x *VncInfo) fromC(xc *C.libxl_vnc_info) error { return nil } =20 +func (x *VncInfo) toC() (xc C.libxl_vnc_info, err error) { + C.libxl_vnc_info_init(&xc) + xc.enable, err =3D x.Enable.toC() + if err !=3D nil { + C.libxl_vnc_info_dispose(&xc) + return xc, err + } + xc.listen =3D C.CString(x.Listen) + xc.passwd =3D C.CString(x.Passwd) + xc.display =3D C.int(x.Display) + xc.findunused, err =3D x.Findunused.toC() + if err !=3D nil { + C.libxl_vnc_info_dispose(&xc) + return xc, err + } + return xc, nil +} + func (x *SpiceInfo) fromC(xc *C.libxl_spice_info) error { var defboolEnable Defbool if err :=3D defboolEnable.fromC(&xc.enable); err !=3D nil { @@ -195,6 +234,43 @@ func (x *SpiceInfo) fromC(xc *C.libxl_spice_info) erro= r { return nil } =20 +func (x *SpiceInfo) toC() (xc C.libxl_spice_info, err error) { + C.libxl_spice_info_init(&xc) + xc.enable, err =3D x.Enable.toC() + if err !=3D nil { + C.libxl_spice_info_dispose(&xc) + return xc, err + } + xc.port =3D C.int(x.Port) + xc.tls_port =3D C.int(x.TlsPort) + xc.host =3D C.CString(x.Host) + xc.disable_ticketing, err =3D x.DisableTicketing.toC() + if err !=3D nil { + C.libxl_spice_info_dispose(&xc) + return xc, err + } + xc.passwd =3D C.CString(x.Passwd) + xc.agent_mouse, err =3D x.AgentMouse.toC() + if err !=3D nil { + C.libxl_spice_info_dispose(&xc) + return xc, err + } + xc.vdagent, err =3D x.Vdagent.toC() + if err !=3D nil { + C.libxl_spice_info_dispose(&xc) + return xc, err + } + xc.clipboard_sharing, err =3D x.ClipboardSharing.toC() + if err !=3D nil { + C.libxl_spice_info_dispose(&xc) + return xc, err + } + xc.usbredirection =3D C.int(x.Usbredirection) + xc.image_compression =3D C.CString(x.ImageCompression) + xc.streaming_video =3D C.CString(x.StreamingVideo) + return xc, nil +} + func (x *SdlInfo) fromC(xc *C.libxl_sdl_info) error { var defboolEnable Defbool if err :=3D defboolEnable.fromC(&xc.enable); err !=3D nil { @@ -211,6 +287,23 @@ func (x *SdlInfo) fromC(xc *C.libxl_sdl_info) error { return nil } =20 +func (x *SdlInfo) toC() (xc C.libxl_sdl_info, err error) { + C.libxl_sdl_info_init(&xc) + xc.enable, err =3D x.Enable.toC() + if err !=3D nil { + C.libxl_sdl_info_dispose(&xc) + return xc, err + } + xc.opengl, err =3D x.Opengl.toC() + if err !=3D nil { + C.libxl_sdl_info_dispose(&xc) + return xc, err + } + xc.display =3D C.CString(x.Display) + xc.xauthority =3D C.CString(x.Xauthority) + return xc, nil +} + func (x *Dominfo) fromC(xc *C.libxl_dominfo) error { var uuidUuid Uuid if err :=3D uuidUuid.fromC(&xc.uuid); err !=3D nil { @@ -240,6 +333,36 @@ func (x *Dominfo) fromC(xc *C.libxl_dominfo) error { return nil } =20 +func (x *Dominfo) toC() (xc C.libxl_dominfo, err error) { + C.libxl_dominfo_init(&xc) + xc.uuid, err =3D x.Uuid.toC() + if err !=3D nil { + C.libxl_dominfo_dispose(&xc) + return xc, err + } + xc.domid =3D C.libxl_domid(x.Domid) + xc.ssidref =3D C.uint32_t(x.Ssidref) + xc.ssid_label =3D C.CString(x.SsidLabel) + xc.running =3D C.bool(x.Running) + xc.blocked =3D C.bool(x.Blocked) + xc.paused =3D C.bool(x.Paused) + xc.shutdown =3D C.bool(x.Shutdown) + xc.dying =3D C.bool(x.Dying) + xc.never_stop =3D C.bool(x.NeverStop) + xc.shutdown_reason =3D C.libxl_shutdown_reason(x.ShutdownReason) + xc.outstanding_memkb =3D C.uint64_t(x.OutstandingMemkb) + xc.current_memkb =3D C.uint64_t(x.CurrentMemkb) + xc.shared_memkb =3D C.uint64_t(x.SharedMemkb) + xc.paged_memkb =3D C.uint64_t(x.PagedMemkb) + xc.max_memkb =3D C.uint64_t(x.MaxMemkb) + xc.cpu_time =3D C.uint64_t(x.CpuTime) + xc.vcpu_max_id =3D C.uint32_t(x.VcpuMaxId) + xc.vcpu_online =3D C.uint32_t(x.VcpuOnline) + xc.cpupool =3D C.uint32_t(x.Cpupool) + xc.domain_type =3D C.libxl_domain_type(x.DomainType) + return xc, nil +} + func (x *Cpupoolinfo) fromC(xc *C.libxl_cpupoolinfo) error { x.Poolid =3D uint32(xc.poolid) x.PoolName =3D C.GoString(xc.pool_name) @@ -253,6 +376,20 @@ func (x *Cpupoolinfo) fromC(xc *C.libxl_cpupoolinfo) e= rror { return nil } =20 +func (x *Cpupoolinfo) toC() (xc C.libxl_cpupoolinfo, err error) { + C.libxl_cpupoolinfo_init(&xc) + xc.poolid =3D C.uint32_t(x.Poolid) + xc.pool_name =3D C.CString(x.PoolName) + xc.sched =3D C.libxl_scheduler(x.Sched) + xc.n_dom =3D C.uint32_t(x.NDom) + xc.cpumap, err =3D x.Cpumap.toC() + if err !=3D nil { + C.libxl_cpupoolinfo_dispose(&xc) + return xc, err + } + return xc, nil +} + func (x *Channelinfo) fromC(xc *C.libxl_channelinfo) error { x.Backend =3D C.GoString(xc.backend) x.BackendId =3D uint32(xc.backend_id) @@ -286,6 +423,19 @@ func (x *ChannelinfoConnectionUnionPty) fromC(xc *C.li= bxl_channelinfo) error { return nil } =20 +func (x *Channelinfo) toC() (xc C.libxl_channelinfo, err error) { + C.libxl_channelinfo_init(&xc) + xc.backend =3D C.CString(x.Backend) + xc.backend_id =3D C.uint32_t(x.BackendId) + xc.frontend =3D C.CString(x.Frontend) + xc.frontend_id =3D C.uint32_t(x.FrontendId) + xc.devid =3D C.libxl_devid(x.Devid) + xc.state =3D C.int(x.State) + xc.evtch =3D C.int(x.Evtch) + xc.rref =3D C.int(x.Rref) + return xc, nil +} + func (x *Vminfo) fromC(xc *C.libxl_vminfo) error { var uuidUuid Uuid if err :=3D uuidUuid.fromC(&xc.uuid); err !=3D nil { @@ -296,6 +446,17 @@ func (x *Vminfo) fromC(xc *C.libxl_vminfo) error { return nil } =20 +func (x *Vminfo) toC() (xc C.libxl_vminfo, err error) { + C.libxl_vminfo_init(&xc) + xc.uuid, err =3D x.Uuid.toC() + if err !=3D nil { + C.libxl_vminfo_dispose(&xc) + return xc, err + } + xc.domid =3D C.libxl_domid(x.Domid) + return xc, nil +} + func (x *VersionInfo) fromC(xc *C.libxl_version_info) error { x.XenVersionMajor =3D int(xc.xen_version_major) x.XenVersionMinor =3D int(xc.xen_version_minor) @@ -313,6 +474,24 @@ func (x *VersionInfo) fromC(xc *C.libxl_version_info) = error { return nil } =20 +func (x *VersionInfo) toC() (xc C.libxl_version_info, err error) { + C.libxl_version_info_init(&xc) + xc.xen_version_major =3D C.int(x.XenVersionMajor) + xc.xen_version_minor =3D C.int(x.XenVersionMinor) + xc.xen_version_extra =3D C.CString(x.XenVersionExtra) + xc.compiler =3D C.CString(x.Compiler) + xc.compile_by =3D C.CString(x.CompileBy) + xc.compile_domain =3D C.CString(x.CompileDomain) + xc.compile_date =3D C.CString(x.CompileDate) + xc.capabilities =3D C.CString(x.Capabilities) + 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 C.CString(x.Commandline) + xc.build_id =3D C.CString(x.BuildId) + return xc, nil +} + func (x *DomainCreateInfo) fromC(xc *C.libxl_domain_create_info) error { x.Type =3D DomainType(xc._type) var defboolHap Defbool @@ -359,6 +538,53 @@ func (x *DomainCreateInfo) fromC(xc *C.libxl_domain_cr= eate_info) error { return nil } =20 +func (x *DomainCreateInfo) toC() (xc C.libxl_domain_create_info, err error= ) { + C.libxl_domain_create_info_init(&xc) + xc._type =3D C.libxl_domain_type(x.Type) + xc.hap, err =3D x.Hap.toC() + if err !=3D nil { + C.libxl_domain_create_info_dispose(&xc) + return xc, err + } + xc.oos, err =3D x.Oos.toC() + if err !=3D nil { + C.libxl_domain_create_info_dispose(&xc) + return xc, err + } + xc.ssidref =3D C.uint32_t(x.Ssidref) + xc.ssid_label =3D C.CString(x.SsidLabel) + xc.name =3D C.CString(x.Name) + xc.uuid, err =3D x.Uuid.toC() + if err !=3D nil { + C.libxl_domain_create_info_dispose(&xc) + return xc, err + } + xc.xsdata, err =3D x.Xsdata.toC() + if err !=3D nil { + C.libxl_domain_create_info_dispose(&xc) + return xc, err + } + xc.platformdata, err =3D x.Platformdata.toC() + if err !=3D nil { + C.libxl_domain_create_info_dispose(&xc) + return xc, err + } + xc.poolid =3D C.uint32_t(x.Poolid) + xc.pool_name =3D C.CString(x.PoolName) + xc.run_hotplug_scripts, err =3D x.RunHotplugScripts.toC() + if err !=3D nil { + C.libxl_domain_create_info_dispose(&xc) + return xc, err + } + xc.driver_domain, err =3D x.DriverDomain.toC() + if err !=3D nil { + C.libxl_domain_create_info_dispose(&xc) + return xc, err + } + xc.passthrough =3D C.libxl_passthrough(x.Passthrough) + return xc, nil +} + func (x *DomainRestoreParams) fromC(xc *C.libxl_domain_restore_params) err= or { x.CheckpointedStream =3D int(xc.checkpointed_stream) x.StreamVersion =3D uint32(xc.stream_version) @@ -371,6 +597,19 @@ func (x *DomainRestoreParams) fromC(xc *C.libxl_domain= _restore_params) error { return nil } =20 +func (x *DomainRestoreParams) toC() (xc C.libxl_domain_restore_params, err= error) { + C.libxl_domain_restore_params_init(&xc) + xc.checkpointed_stream =3D C.int(x.CheckpointedStream) + xc.stream_version =3D C.uint32_t(x.StreamVersion) + xc.colo_proxy_script =3D C.CString(x.ColoProxyScript) + xc.userspace_colo_proxy, err =3D x.UserspaceColoProxy.toC() + if err !=3D nil { + C.libxl_domain_restore_params_dispose(&xc) + return xc, err + } + return xc, nil +} + func (x *SchedParams) fromC(xc *C.libxl_sched_params) error { x.Vcpuid =3D int(xc.vcpuid) x.Weight =3D int(xc.weight) @@ -381,6 +620,17 @@ func (x *SchedParams) fromC(xc *C.libxl_sched_params) = error { return nil } =20 +func (x *SchedParams) toC() (xc C.libxl_sched_params, err error) { + C.libxl_sched_params_init(&xc) + xc.vcpuid =3D C.int(x.Vcpuid) + xc.weight =3D C.int(x.Weight) + xc.cap =3D C.int(x.Cap) + xc.period =3D C.int(x.Period) + xc.extratime =3D C.int(x.Extratime) + xc.budget =3D C.int(x.Budget) + return xc, nil +} + func (x *VcpuSchedParams) fromC(xc *C.libxl_vcpu_sched_params) error { x.Sched =3D Scheduler(xc.sched) numVcpus :=3D int(xc.num_vcpus) @@ -396,6 +646,12 @@ func (x *VcpuSchedParams) fromC(xc *C.libxl_vcpu_sched= _params) error { return nil } =20 +func (x *VcpuSchedParams) toC() (xc C.libxl_vcpu_sched_params, err error) { + C.libxl_vcpu_sched_params_init(&xc) + xc.sched =3D C.libxl_scheduler(x.Sched) + return xc, nil +} + func (x *DomainSchedParams) fromC(xc *C.libxl_domain_sched_params) error { x.Sched =3D Scheduler(xc.sched) x.Weight =3D int(xc.weight) @@ -408,6 +664,19 @@ func (x *DomainSchedParams) fromC(xc *C.libxl_domain_s= ched_params) error { return nil } =20 +func (x *DomainSchedParams) toC() (xc C.libxl_domain_sched_params, err err= or) { + C.libxl_domain_sched_params_init(&xc) + xc.sched =3D C.libxl_scheduler(x.Sched) + xc.weight =3D C.int(x.Weight) + xc.cap =3D C.int(x.Cap) + xc.period =3D C.int(x.Period) + xc.budget =3D C.int(x.Budget) + xc.extratime =3D C.int(x.Extratime) + xc.slice =3D C.int(x.Slice) + xc.latency =3D C.int(x.Latency) + return xc, nil +} + func (x *VnodeInfo) fromC(xc *C.libxl_vnode_info) error { x.Memkb =3D uint64(xc.memkb) numDistances :=3D int(xc.num_distances) @@ -425,12 +694,31 @@ func (x *VnodeInfo) fromC(xc *C.libxl_vnode_info) err= or { return nil } =20 +func (x *VnodeInfo) toC() (xc C.libxl_vnode_info, err error) { + C.libxl_vnode_info_init(&xc) + xc.memkb =3D C.uint64_t(x.Memkb) + xc.pnode =3D C.uint32_t(x.Pnode) + xc.vcpus, err =3D x.Vcpus.toC() + if err !=3D nil { + C.libxl_vnode_info_dispose(&xc) + return xc, err + } + return xc, nil +} + func (x *RdmReserve) fromC(xc *C.libxl_rdm_reserve) error { x.Strategy =3D RdmReserveStrategy(xc.strategy) x.Policy =3D RdmReservePolicy(xc.policy) return nil } =20 +func (x *RdmReserve) toC() (xc C.libxl_rdm_reserve, err error) { + C.libxl_rdm_reserve_init(&xc) + xc.strategy =3D C.libxl_rdm_reserve_strategy(x.Strategy) + xc.policy =3D C.libxl_rdm_reserve_policy(x.Policy) + return xc, nil +} + func (x *DomainBuildInfo) fromC(xc *C.libxl_domain_build_info) error { x.MaxVcpus =3D int(xc.max_vcpus) var bitmapAvailVcpus Bitmap @@ -778,6 +1066,130 @@ func (x *DomainBuildInfoTypeUnionPvh) fromC(xc *C.li= bxl_domain_build_info) error return nil } =20 +func (x *DomainBuildInfo) toC() (xc C.libxl_domain_build_info, err error) { + C.libxl_domain_build_info_init(&xc) + xc.max_vcpus =3D C.int(x.MaxVcpus) + xc.avail_vcpus, err =3D x.AvailVcpus.toC() + if err !=3D nil { + C.libxl_domain_build_info_dispose(&xc) + return xc, err + } + xc.cpumap, err =3D x.Cpumap.toC() + if err !=3D nil { + C.libxl_domain_build_info_dispose(&xc) + return xc, err + } + xc.nodemap, err =3D x.Nodemap.toC() + if err !=3D nil { + C.libxl_domain_build_info_dispose(&xc) + return xc, err + } + xc.numa_placement, err =3D x.NumaPlacement.toC() + if err !=3D nil { + C.libxl_domain_build_info_dispose(&xc) + return xc, err + } + xc.tsc_mode =3D C.libxl_tsc_mode(x.TscMode) + xc.max_memkb =3D C.uint64_t(x.MaxMemkb) + xc.target_memkb =3D C.uint64_t(x.TargetMemkb) + xc.video_memkb =3D C.uint64_t(x.VideoMemkb) + 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 C.CString(x.ExecSsidLabel) + xc.localtime, err =3D x.Localtime.toC() + if err !=3D nil { + C.libxl_domain_build_info_dispose(&xc) + return xc, err + } + xc.disable_migrate, err =3D x.DisableMigrate.toC() + if err !=3D nil { + C.libxl_domain_build_info_dispose(&xc) + return xc, err + } + xc.cpuid, err =3D x.Cpuid.toC() + if err !=3D nil { + C.libxl_domain_build_info_dispose(&xc) + return xc, err + } + xc.blkdev_start =3D C.CString(x.BlkdevStart) + xc.max_grant_frames =3D C.uint32_t(x.MaxGrantFrames) + xc.max_maptrack_frames =3D C.uint32_t(x.MaxMaptrackFrames) + xc.device_model_version =3D C.libxl_device_model_version(x.DeviceModelVer= sion) + xc.device_model_stubdomain, err =3D x.DeviceModelStubdomain.toC() + if err !=3D nil { + C.libxl_domain_build_info_dispose(&xc) + return xc, err + } + xc.device_model =3D C.CString(x.DeviceModel) + xc.device_model_ssidref =3D C.uint32_t(x.DeviceModelSsidref) + xc.device_model_ssid_label =3D C.CString(x.DeviceModelSsidLabel) + xc.device_model_user =3D C.CString(x.DeviceModelUser) + xc.extra, err =3D x.Extra.toC() + if err !=3D nil { + C.libxl_domain_build_info_dispose(&xc) + return xc, err + } + xc.extra_pv, err =3D x.ExtraPv.toC() + if err !=3D nil { + C.libxl_domain_build_info_dispose(&xc) + return xc, err + } + xc.extra_hvm, err =3D x.ExtraHvm.toC() + if err !=3D nil { + C.libxl_domain_build_info_dispose(&xc) + return xc, err + } + xc.sched_params, err =3D x.SchedParams.toC() + if err !=3D nil { + C.libxl_domain_build_info_dispose(&xc) + return xc, err + } + xc.claim_mode, err =3D x.ClaimMode.toC() + if err !=3D nil { + C.libxl_domain_build_info_dispose(&xc) + return xc, err + } + xc.event_channels =3D C.uint32_t(x.EventChannels) + xc.kernel =3D C.CString(x.Kernel) + xc.cmdline =3D C.CString(x.Cmdline) + xc.ramdisk =3D C.CString(x.Ramdisk) + xc.device_tree =3D C.CString(x.DeviceTree) + xc.acpi, err =3D x.Acpi.toC() + if err !=3D nil { + C.libxl_domain_build_info_dispose(&xc) + return xc, err + } + xc.bootloader =3D C.CString(x.Bootloader) + xc.bootloader_args, err =3D x.BootloaderArgs.toC() + if err !=3D nil { + C.libxl_domain_build_info_dispose(&xc) + return xc, err + } + xc.timer_mode =3D C.libxl_timer_mode(x.TimerMode) + xc.nested_hvm, err =3D x.NestedHvm.toC() + if err !=3D nil { + C.libxl_domain_build_info_dispose(&xc) + return xc, err + } + xc.apic, err =3D x.Apic.toC() + if err !=3D nil { + C.libxl_domain_build_info_dispose(&xc) + return xc, err + } + xc.dm_restrict, err =3D x.DmRestrict.toC() + if err !=3D nil { + C.libxl_domain_build_info_dispose(&xc) + return xc, err + } + xc.tee =3D C.libxl_tee_type(x.Tee) + 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) + xc.altp2m =3D C.libxl_altp2m_mode(x.Altp2M) + return xc, nil +} + func (x *DeviceVfb) fromC(xc *C.libxl_device_vfb) error { x.BackendDomid =3D Domid(xc.backend_domid) x.BackendDomname =3D C.GoString(xc.backend_domname) @@ -796,6 +1208,25 @@ func (x *DeviceVfb) fromC(xc *C.libxl_device_vfb) err= or { return nil } =20 +func (x *DeviceVfb) toC() (xc C.libxl_device_vfb, err error) { + C.libxl_device_vfb_init(&xc) + xc.backend_domid =3D C.libxl_domid(x.BackendDomid) + xc.backend_domname =3D C.CString(x.BackendDomname) + xc.devid =3D C.libxl_devid(x.Devid) + xc.vnc, err =3D x.Vnc.toC() + if err !=3D nil { + C.libxl_device_vfb_dispose(&xc) + return xc, err + } + xc.sdl, err =3D x.Sdl.toC() + if err !=3D nil { + C.libxl_device_vfb_dispose(&xc) + return xc, err + } + xc.keymap =3D C.CString(x.Keymap) + return xc, nil +} + func (x *DeviceVkb) fromC(xc *C.libxl_device_vkb) error { x.BackendDomid =3D Domid(xc.backend_domid) x.BackendDomname =3D C.GoString(xc.backend_domname) @@ -815,6 +1246,26 @@ func (x *DeviceVkb) fromC(xc *C.libxl_device_vkb) err= or { return nil } =20 +func (x *DeviceVkb) toC() (xc C.libxl_device_vkb, err error) { + C.libxl_device_vkb_init(&xc) + xc.backend_domid =3D C.libxl_domid(x.BackendDomid) + 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 C.CString(x.UniqueId) + xc.feature_disable_keyboard =3D C.bool(x.FeatureDisableKeyboard) + xc.feature_disable_pointer =3D C.bool(x.FeatureDisablePointer) + xc.feature_abs_pointer =3D C.bool(x.FeatureAbsPointer) + xc.feature_raw_pointer =3D C.bool(x.FeatureRawPointer) + xc.feature_multi_touch =3D C.bool(x.FeatureMultiTouch) + xc.width =3D C.uint32_t(x.Width) + xc.height =3D C.uint32_t(x.Height) + xc.multi_touch_width =3D C.uint32_t(x.MultiTouchWidth) + xc.multi_touch_height =3D C.uint32_t(x.MultiTouchHeight) + xc.multi_touch_num_contacts =3D C.uint32_t(x.MultiTouchNumContacts) + return xc, nil +} + func (x *DeviceDisk) fromC(xc *C.libxl_device_disk) error { x.BackendDomid =3D Domid(xc.backend_domid) x.BackendDomname =3D C.GoString(xc.backend_domname) @@ -850,6 +1301,42 @@ func (x *DeviceDisk) fromC(xc *C.libxl_device_disk) e= rror { return nil } =20 +func (x *DeviceDisk) toC() (xc C.libxl_device_disk, err error) { + C.libxl_device_disk_init(&xc) + xc.backend_domid =3D C.libxl_domid(x.BackendDomid) + xc.backend_domname =3D C.CString(x.BackendDomname) + xc.pdev_path =3D C.CString(x.PdevPath) + 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 C.CString(x.Script) + xc.removable =3D C.int(x.Removable) + xc.readwrite =3D C.int(x.Readwrite) + xc.is_cdrom =3D C.int(x.IsCdrom) + xc.direct_io_safe =3D C.bool(x.DirectIoSafe) + xc.discard_enable, err =3D x.DiscardEnable.toC() + if err !=3D nil { + C.libxl_device_disk_dispose(&xc) + return xc, err + } + xc.colo_enable, err =3D x.ColoEnable.toC() + if err !=3D nil { + C.libxl_device_disk_dispose(&xc) + return xc, err + } + xc.colo_restore_enable, err =3D x.ColoRestoreEnable.toC() + if err !=3D nil { + C.libxl_device_disk_dispose(&xc) + return xc, err + } + xc.colo_host =3D C.CString(x.ColoHost) + xc.colo_port =3D C.int(x.ColoPort) + xc.colo_export =3D C.CString(x.ColoExport) + xc.active_disk =3D C.CString(x.ActiveDisk) + xc.hidden_disk =3D C.CString(x.HiddenDisk) + return xc, nil +} + func (x *DeviceNic) fromC(xc *C.libxl_device_nic) error { x.BackendDomid =3D Domid(xc.backend_domid) x.BackendDomname =3D C.GoString(xc.backend_domname) @@ -921,6 +1408,78 @@ func (x *DeviceNic) fromC(xc *C.libxl_device_nic) err= or { return nil } =20 +func (x *DeviceNic) toC() (xc C.libxl_device_nic, err error) { + C.libxl_device_nic_init(&xc) + xc.backend_domid =3D C.libxl_domid(x.BackendDomid) + 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 C.CString(x.Model) + xc.mac, err =3D x.Mac.toC() + if err !=3D nil { + C.libxl_device_nic_dispose(&xc) + return xc, err + } + xc.ip =3D C.CString(x.Ip) + xc.bridge =3D C.CString(x.Bridge) + xc.ifname =3D C.CString(x.Ifname) + 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 C.CString(x.Gatewaydev) + xc.coloft_forwarddev =3D C.CString(x.ColoftForwarddev) + xc.colo_sock_mirror_id =3D C.CString(x.ColoSockMirrorId) + xc.colo_sock_mirror_ip =3D C.CString(x.ColoSockMirrorIp) + xc.colo_sock_mirror_port =3D C.CString(x.ColoSockMirrorPort) + xc.colo_sock_compare_pri_in_id =3D C.CString(x.ColoSockComparePriInId) + xc.colo_sock_compare_pri_in_ip =3D C.CString(x.ColoSockComparePriInIp) + xc.colo_sock_compare_pri_in_port =3D C.CString(x.ColoSockComparePriInPort) + xc.colo_sock_compare_sec_in_id =3D C.CString(x.ColoSockCompareSecInId) + xc.colo_sock_compare_sec_in_ip =3D C.CString(x.ColoSockCompareSecInIp) + xc.colo_sock_compare_sec_in_port =3D C.CString(x.ColoSockCompareSecInPort) + xc.colo_sock_compare_notify_id =3D C.CString(x.ColoSockCompareNotifyId) + xc.colo_sock_compare_notify_ip =3D C.CString(x.ColoSockCompareNotifyIp) + xc.colo_sock_compare_notify_port =3D C.CString(x.ColoSockCompareNotifyPor= t) + xc.colo_sock_redirector0_id =3D C.CString(x.ColoSockRedirector0Id) + xc.colo_sock_redirector0_ip =3D C.CString(x.ColoSockRedirector0Ip) + xc.colo_sock_redirector0_port =3D C.CString(x.ColoSockRedirector0Port) + xc.colo_sock_redirector1_id =3D C.CString(x.ColoSockRedirector1Id) + xc.colo_sock_redirector1_ip =3D C.CString(x.ColoSockRedirector1Ip) + xc.colo_sock_redirector1_port =3D C.CString(x.ColoSockRedirector1Port) + xc.colo_sock_redirector2_id =3D C.CString(x.ColoSockRedirector2Id) + xc.colo_sock_redirector2_ip =3D C.CString(x.ColoSockRedirector2Ip) + xc.colo_sock_redirector2_port =3D C.CString(x.ColoSockRedirector2Port) + xc.colo_filter_mirror_queue =3D C.CString(x.ColoFilterMirrorQueue) + xc.colo_filter_mirror_outdev =3D C.CString(x.ColoFilterMirrorOutdev) + xc.colo_filter_redirector0_queue =3D C.CString(x.ColoFilterRedirector0Que= ue) + xc.colo_filter_redirector0_indev =3D C.CString(x.ColoFilterRedirector0Ind= ev) + xc.colo_filter_redirector0_outdev =3D C.CString(x.ColoFilterRedirector0Ou= tdev) + xc.colo_filter_redirector1_queue =3D C.CString(x.ColoFilterRedirector1Que= ue) + xc.colo_filter_redirector1_indev =3D C.CString(x.ColoFilterRedirector1Ind= ev) + xc.colo_filter_redirector1_outdev =3D C.CString(x.ColoFilterRedirector1Ou= tdev) + xc.colo_compare_pri_in =3D C.CString(x.ColoComparePriIn) + xc.colo_compare_sec_in =3D C.CString(x.ColoCompareSecIn) + xc.colo_compare_out =3D C.CString(x.ColoCompareOut) + xc.colo_compare_notify_dev =3D C.CString(x.ColoCompareNotifyDev) + xc.colo_sock_sec_redirector0_id =3D C.CString(x.ColoSockSecRedirector0Id) + xc.colo_sock_sec_redirector0_ip =3D C.CString(x.ColoSockSecRedirector0Ip) + xc.colo_sock_sec_redirector0_port =3D C.CString(x.ColoSockSecRedirector0P= ort) + xc.colo_sock_sec_redirector1_id =3D C.CString(x.ColoSockSecRedirector1Id) + xc.colo_sock_sec_redirector1_ip =3D C.CString(x.ColoSockSecRedirector1Ip) + xc.colo_sock_sec_redirector1_port =3D C.CString(x.ColoSockSecRedirector1P= ort) + xc.colo_filter_sec_redirector0_queue =3D C.CString(x.ColoFilterSecRedirec= tor0Queue) + xc.colo_filter_sec_redirector0_indev =3D C.CString(x.ColoFilterSecRedirec= tor0Indev) + xc.colo_filter_sec_redirector0_outdev =3D C.CString(x.ColoFilterSecRedire= ctor0Outdev) + xc.colo_filter_sec_redirector1_queue =3D C.CString(x.ColoFilterSecRedirec= tor1Queue) + xc.colo_filter_sec_redirector1_indev =3D C.CString(x.ColoFilterSecRedirec= tor1Indev) + xc.colo_filter_sec_redirector1_outdev =3D C.CString(x.ColoFilterSecRedire= ctor1Outdev) + xc.colo_filter_sec_rewriter0_queue =3D C.CString(x.ColoFilterSecRewriter0= Queue) + xc.colo_checkpoint_host =3D C.CString(x.ColoCheckpointHost) + xc.colo_checkpoint_port =3D C.CString(x.ColoCheckpointPort) + return xc, nil +} + func (x *DevicePci) fromC(xc *C.libxl_device_pci) error { x.Func =3D byte(xc._func) x.Dev =3D byte(xc.dev) @@ -936,6 +1495,22 @@ func (x *DevicePci) fromC(xc *C.libxl_device_pci) err= or { return nil } =20 +func (x *DevicePci) toC() (xc C.libxl_device_pci, err error) { + C.libxl_device_pci_init(&xc) + xc._func =3D C.uint8_t(x.Func) + xc.dev =3D C.uint8_t(x.Dev) + xc.bus =3D C.uint8_t(x.Bus) + xc.domain =3D C.int(x.Domain) + xc.vdevfn =3D C.uint32_t(x.Vdevfn) + xc.vfunc_mask =3D C.uint32_t(x.VfuncMask) + xc.msitranslate =3D C.bool(x.Msitranslate) + 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) + return xc, nil +} + func (x *DeviceRdm) fromC(xc *C.libxl_device_rdm) error { x.Start =3D uint64(xc.start) x.Size =3D uint64(xc.size) @@ -943,6 +1518,14 @@ func (x *DeviceRdm) fromC(xc *C.libxl_device_rdm) err= or { return nil } =20 +func (x *DeviceRdm) toC() (xc C.libxl_device_rdm, err error) { + C.libxl_device_rdm_init(&xc) + xc.start =3D C.uint64_t(x.Start) + xc.size =3D C.uint64_t(x.Size) + xc.policy =3D C.libxl_rdm_reserve_policy(x.Policy) + return xc, nil +} + func (x *DeviceUsbctrl) fromC(xc *C.libxl_device_usbctrl) error { x.Type =3D UsbctrlType(xc._type) x.Devid =3D Devid(xc.devid) @@ -953,6 +1536,17 @@ func (x *DeviceUsbctrl) fromC(xc *C.libxl_device_usbc= trl) error { return nil } =20 +func (x *DeviceUsbctrl) toC() (xc C.libxl_device_usbctrl, err error) { + C.libxl_device_usbctrl_init(&xc) + 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_domid =3D C.libxl_domid(x.BackendDomid) + xc.backend_domname =3D C.CString(x.BackendDomname) + return xc, nil +} + func (x *DeviceUsbdev) fromC(xc *C.libxl_device_usbdev) error { x.Ctrl =3D Devid(xc.ctrl) x.Port =3D int(xc.port) @@ -981,11 +1575,24 @@ func (x *DeviceUsbdevTypeUnionHostdev) fromC(xc *C.l= ibxl_device_usbdev) error { return nil } =20 +func (x *DeviceUsbdev) toC() (xc C.libxl_device_usbdev, err error) { + C.libxl_device_usbdev_init(&xc) + xc.ctrl =3D C.libxl_devid(x.Ctrl) + xc.port =3D C.int(x.Port) + return xc, nil +} + func (x *DeviceDtdev) fromC(xc *C.libxl_device_dtdev) error { x.Path =3D C.GoString(xc.path) return nil } =20 +func (x *DeviceDtdev) toC() (xc C.libxl_device_dtdev, err error) { + C.libxl_device_dtdev_init(&xc) + xc.path =3D C.CString(x.Path) + return xc, nil +} + func (x *DeviceVtpm) fromC(xc *C.libxl_device_vtpm) error { x.BackendDomid =3D Domid(xc.backend_domid) x.BackendDomname =3D C.GoString(xc.backend_domname) @@ -998,6 +1605,19 @@ func (x *DeviceVtpm) fromC(xc *C.libxl_device_vtpm) e= rror { return nil } =20 +func (x *DeviceVtpm) toC() (xc C.libxl_device_vtpm, err error) { + C.libxl_device_vtpm_init(&xc) + xc.backend_domid =3D C.libxl_domid(x.BackendDomid) + xc.backend_domname =3D C.CString(x.BackendDomname) + xc.devid =3D C.libxl_devid(x.Devid) + xc.uuid, err =3D x.Uuid.toC() + if err !=3D nil { + C.libxl_device_vtpm_dispose(&xc) + return xc, err + } + return xc, nil +} + func (x *DeviceP9) fromC(xc *C.libxl_device_p9) error { x.BackendDomid =3D Domid(xc.backend_domid) x.BackendDomname =3D C.GoString(xc.backend_domname) @@ -1008,6 +1628,17 @@ func (x *DeviceP9) fromC(xc *C.libxl_device_p9) erro= r { return nil } =20 +func (x *DeviceP9) toC() (xc C.libxl_device_p9, err error) { + C.libxl_device_p9_init(&xc) + xc.backend_domid =3D C.libxl_domid(x.BackendDomid) + xc.backend_domname =3D C.CString(x.BackendDomname) + xc.tag =3D C.CString(x.Tag) + xc.path =3D C.CString(x.Path) + xc.security_model =3D C.CString(x.SecurityModel) + xc.devid =3D C.libxl_devid(x.Devid) + return xc, nil +} + func (x *DevicePvcallsif) fromC(xc *C.libxl_device_pvcallsif) error { x.BackendDomid =3D Domid(xc.backend_domid) x.BackendDomname =3D C.GoString(xc.backend_domname) @@ -1015,6 +1646,14 @@ func (x *DevicePvcallsif) fromC(xc *C.libxl_device_p= vcallsif) error { return nil } =20 +func (x *DevicePvcallsif) toC() (xc C.libxl_device_pvcallsif, err error) { + C.libxl_device_pvcallsif_init(&xc) + xc.backend_domid =3D C.libxl_domid(x.BackendDomid) + xc.backend_domname =3D C.CString(x.BackendDomname) + xc.devid =3D C.libxl_devid(x.Devid) + return xc, nil +} + func (x *DeviceChannel) fromC(xc *C.libxl_device_channel) error { x.BackendDomid =3D Domid(xc.backend_domid) x.BackendDomname =3D C.GoString(xc.backend_domname) @@ -1044,6 +1683,15 @@ func (x *DeviceChannelConnectionUnionSocket) fromC(x= c *C.libxl_device_channel) e return nil } =20 +func (x *DeviceChannel) toC() (xc C.libxl_device_channel, err error) { + C.libxl_device_channel_init(&xc) + xc.backend_domid =3D C.libxl_domid(x.BackendDomid) + xc.backend_domname =3D C.CString(x.BackendDomname) + xc.devid =3D C.libxl_devid(x.Devid) + xc.name =3D C.CString(x.Name) + return xc, nil +} + func (x *ConnectorParam) fromC(xc *C.libxl_connector_param) error { x.UniqueId =3D C.GoString(xc.unique_id) x.Width =3D uint32(xc.width) @@ -1051,6 +1699,14 @@ func (x *ConnectorParam) fromC(xc *C.libxl_connector= _param) error { return nil } =20 +func (x *ConnectorParam) toC() (xc C.libxl_connector_param, err error) { + C.libxl_connector_param_init(&xc) + xc.unique_id =3D C.CString(x.UniqueId) + xc.width =3D C.uint32_t(x.Width) + xc.height =3D C.uint32_t(x.Height) + return xc, nil +} + func (x *DeviceVdispl) fromC(xc *C.libxl_device_vdispl) error { x.BackendDomid =3D Domid(xc.backend_domid) x.BackendDomname =3D C.GoString(xc.backend_domname) @@ -1069,6 +1725,15 @@ func (x *DeviceVdispl) fromC(xc *C.libxl_device_vdis= pl) error { return nil } =20 +func (x *DeviceVdispl) toC() (xc C.libxl_device_vdispl, err error) { + C.libxl_device_vdispl_init(&xc) + xc.backend_domid =3D C.libxl_domid(x.BackendDomid) + xc.backend_domname =3D C.CString(x.BackendDomname) + xc.devid =3D C.libxl_devid(x.Devid) + xc.be_alloc =3D C.bool(x.BeAlloc) + return xc, nil +} + func (x *VsndParams) fromC(xc *C.libxl_vsnd_params) error { numSampleRates :=3D int(xc.num_sample_rates) cSampleRates :=3D (*[1 << 28]C.uint32_t)(unsafe.Pointer(xc.sample_rates))= [:numSampleRates:numSampleRates] @@ -1088,6 +1753,14 @@ func (x *VsndParams) fromC(xc *C.libxl_vsnd_params) = error { return nil } =20 +func (x *VsndParams) toC() (xc C.libxl_vsnd_params, err error) { + C.libxl_vsnd_params_init(&xc) + xc.channels_min =3D C.uint32_t(x.ChannelsMin) + xc.channels_max =3D C.uint32_t(x.ChannelsMax) + xc.buffer_size =3D C.uint32_t(x.BufferSize) + return xc, nil +} + func (x *VsndStream) fromC(xc *C.libxl_vsnd_stream) error { x.UniqueId =3D C.GoString(xc.unique_id) x.Type =3D VsndStreamType(xc._type) @@ -1099,6 +1772,18 @@ func (x *VsndStream) fromC(xc *C.libxl_vsnd_stream) = error { return nil } =20 +func (x *VsndStream) toC() (xc C.libxl_vsnd_stream, err error) { + C.libxl_vsnd_stream_init(&xc) + xc.unique_id =3D C.CString(x.UniqueId) + xc._type =3D C.libxl_vsnd_stream_type(x.Type) + xc.params, err =3D x.Params.toC() + if err !=3D nil { + C.libxl_vsnd_stream_dispose(&xc) + return xc, err + } + return xc, nil +} + func (x *VsndPcm) fromC(xc *C.libxl_vsnd_pcm) error { x.Name =3D C.GoString(xc.name) var vsndParamsParams VsndParams @@ -1119,6 +1804,17 @@ func (x *VsndPcm) fromC(xc *C.libxl_vsnd_pcm) error { return nil } =20 +func (x *VsndPcm) toC() (xc C.libxl_vsnd_pcm, err error) { + C.libxl_vsnd_pcm_init(&xc) + xc.name =3D C.CString(x.Name) + xc.params, err =3D x.Params.toC() + if err !=3D nil { + C.libxl_vsnd_pcm_dispose(&xc) + return xc, err + } + return xc, nil +} + func (x *DeviceVsnd) fromC(xc *C.libxl_device_vsnd) error { x.BackendDomid =3D Domid(xc.backend_domid) x.BackendDomname =3D C.GoString(xc.backend_domname) @@ -1143,6 +1839,21 @@ func (x *DeviceVsnd) fromC(xc *C.libxl_device_vsnd) = error { return nil } =20 +func (x *DeviceVsnd) toC() (xc C.libxl_device_vsnd, err error) { + C.libxl_device_vsnd_init(&xc) + xc.backend_domid =3D C.libxl_domid(x.BackendDomid) + xc.backend_domname =3D C.CString(x.BackendDomname) + xc.devid =3D C.libxl_devid(x.Devid) + xc.short_name =3D C.CString(x.ShortName) + xc.long_name =3D C.CString(x.LongName) + xc.params, err =3D x.Params.toC() + if err !=3D nil { + C.libxl_device_vsnd_dispose(&xc) + return xc, err + } + return xc, nil +} + func (x *DomainConfig) fromC(xc *C.libxl_domain_config) error { var domainCreateInfoCInfo DomainCreateInfo if err :=3D domainCreateInfoCInfo.fromC(&xc.c_info); err !=3D nil { @@ -1312,6 +2023,26 @@ func (x *DomainConfig) fromC(xc *C.libxl_domain_conf= ig) error { return nil } =20 +func (x *DomainConfig) toC() (xc C.libxl_domain_config, err error) { + C.libxl_domain_config_init(&xc) + xc.c_info, err =3D x.CInfo.toC() + if err !=3D nil { + C.libxl_domain_config_dispose(&xc) + return xc, err + } + xc.b_info, err =3D x.BInfo.toC() + if err !=3D nil { + C.libxl_domain_config_dispose(&xc) + return xc, err + } + xc.on_poweroff =3D C.libxl_action_on_shutdown(x.OnPoweroff) + xc.on_reboot =3D C.libxl_action_on_shutdown(x.OnReboot) + xc.on_watchdog =3D C.libxl_action_on_shutdown(x.OnWatchdog) + xc.on_crash =3D C.libxl_action_on_shutdown(x.OnCrash) + xc.on_soft_reset =3D C.libxl_action_on_shutdown(x.OnSoftReset) + return xc, nil +} + func (x *Diskinfo) fromC(xc *C.libxl_diskinfo) error { x.Backend =3D C.GoString(xc.backend) x.BackendId =3D uint32(xc.backend_id) @@ -1324,6 +2055,19 @@ func (x *Diskinfo) fromC(xc *C.libxl_diskinfo) error= { return nil } =20 +func (x *Diskinfo) toC() (xc C.libxl_diskinfo, err error) { + C.libxl_diskinfo_init(&xc) + xc.backend =3D C.CString(x.Backend) + xc.backend_id =3D C.uint32_t(x.BackendId) + xc.frontend =3D C.CString(x.Frontend) + xc.frontend_id =3D C.uint32_t(x.FrontendId) + xc.devid =3D C.libxl_devid(x.Devid) + xc.state =3D C.int(x.State) + xc.evtch =3D C.int(x.Evtch) + xc.rref =3D C.int(x.Rref) + return xc, nil +} + func (x *Nicinfo) fromC(xc *C.libxl_nicinfo) error { x.Backend =3D C.GoString(xc.backend) x.BackendId =3D uint32(xc.backend_id) @@ -1337,6 +2081,20 @@ func (x *Nicinfo) fromC(xc *C.libxl_nicinfo) error { return nil } =20 +func (x *Nicinfo) toC() (xc C.libxl_nicinfo, err error) { + C.libxl_nicinfo_init(&xc) + xc.backend =3D C.CString(x.Backend) + xc.backend_id =3D C.uint32_t(x.BackendId) + xc.frontend =3D C.CString(x.Frontend) + xc.frontend_id =3D C.uint32_t(x.FrontendId) + xc.devid =3D C.libxl_devid(x.Devid) + xc.state =3D C.int(x.State) + xc.evtch =3D C.int(x.Evtch) + xc.rref_tx =3D C.int(x.RrefTx) + xc.rref_rx =3D C.int(x.RrefRx) + return xc, nil +} + func (x *Vtpminfo) fromC(xc *C.libxl_vtpminfo) error { x.Backend =3D C.GoString(xc.backend) x.BackendId =3D uint32(xc.backend_id) @@ -1354,6 +2112,24 @@ func (x *Vtpminfo) fromC(xc *C.libxl_vtpminfo) error= { return nil } =20 +func (x *Vtpminfo) toC() (xc C.libxl_vtpminfo, err error) { + C.libxl_vtpminfo_init(&xc) + xc.backend =3D C.CString(x.Backend) + xc.backend_id =3D C.uint32_t(x.BackendId) + xc.frontend =3D C.CString(x.Frontend) + xc.frontend_id =3D C.uint32_t(x.FrontendId) + xc.devid =3D C.libxl_devid(x.Devid) + xc.state =3D C.int(x.State) + xc.evtch =3D C.int(x.Evtch) + xc.rref =3D C.int(x.Rref) + xc.uuid, err =3D x.Uuid.toC() + if err !=3D nil { + C.libxl_vtpminfo_dispose(&xc) + return xc, err + } + return xc, nil +} + func (x *Usbctrlinfo) fromC(xc *C.libxl_usbctrlinfo) error { x.Type =3D UsbctrlType(xc._type) x.Devid =3D Devid(xc.devid) @@ -1370,6 +2146,23 @@ func (x *Usbctrlinfo) fromC(xc *C.libxl_usbctrlinfo)= error { return nil } =20 +func (x *Usbctrlinfo) toC() (xc C.libxl_usbctrlinfo, err error) { + C.libxl_usbctrlinfo_init(&xc) + 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 C.CString(x.Backend) + xc.backend_id =3D C.uint32_t(x.BackendId) + xc.frontend =3D C.CString(x.Frontend) + xc.frontend_id =3D C.uint32_t(x.FrontendId) + xc.state =3D C.int(x.State) + xc.evtch =3D C.int(x.Evtch) + xc.ref_urb =3D C.int(x.RefUrb) + xc.ref_conn =3D C.int(x.RefConn) + return xc, nil +} + func (x *Vcpuinfo) fromC(xc *C.libxl_vcpuinfo) error { x.Vcpuid =3D uint32(xc.vcpuid) x.Cpu =3D uint32(xc.cpu) @@ -1390,6 +2183,27 @@ func (x *Vcpuinfo) fromC(xc *C.libxl_vcpuinfo) error= { return nil } =20 +func (x *Vcpuinfo) toC() (xc C.libxl_vcpuinfo, err error) { + C.libxl_vcpuinfo_init(&xc) + xc.vcpuid =3D C.uint32_t(x.Vcpuid) + xc.cpu =3D C.uint32_t(x.Cpu) + xc.online =3D C.bool(x.Online) + xc.blocked =3D C.bool(x.Blocked) + xc.running =3D C.bool(x.Running) + xc.vcpu_time =3D C.uint64_t(x.VcpuTime) + xc.cpumap, err =3D x.Cpumap.toC() + if err !=3D nil { + C.libxl_vcpuinfo_dispose(&xc) + return xc, err + } + xc.cpumap_soft, err =3D x.CpumapSoft.toC() + if err !=3D nil { + C.libxl_vcpuinfo_dispose(&xc) + return xc, err + } + return xc, nil +} + func (x *Physinfo) fromC(xc *C.libxl_physinfo) error { x.ThreadsPerCore =3D uint32(xc.threads_per_core) x.CoresPerSocket =3D uint32(xc.cores_per_socket) @@ -1418,6 +2232,35 @@ func (x *Physinfo) fromC(xc *C.libxl_physinfo) error= { return nil } =20 +func (x *Physinfo) toC() (xc C.libxl_physinfo, err error) { + C.libxl_physinfo_init(&xc) + xc.threads_per_core =3D C.uint32_t(x.ThreadsPerCore) + xc.cores_per_socket =3D C.uint32_t(x.CoresPerSocket) + xc.max_cpu_id =3D C.uint32_t(x.MaxCpuId) + xc.nr_cpus =3D C.uint32_t(x.NrCpus) + xc.cpu_khz =3D C.uint32_t(x.CpuKhz) + xc.total_pages =3D C.uint64_t(x.TotalPages) + xc.free_pages =3D C.uint64_t(x.FreePages) + xc.scrub_pages =3D C.uint64_t(x.ScrubPages) + xc.outstanding_pages =3D C.uint64_t(x.OutstandingPages) + xc.sharing_freed_pages =3D C.uint64_t(x.SharingFreedPages) + xc.sharing_used_frames =3D C.uint64_t(x.SharingUsedFrames) + xc.max_possible_mfn =3D C.uint64_t(x.MaxPossibleMfn) + xc.nr_nodes =3D C.uint32_t(x.NrNodes) + xc.hw_cap, err =3D x.HwCap.toC() + if err !=3D nil { + C.libxl_physinfo_dispose(&xc) + return xc, err + } + xc.cap_hvm =3D C.bool(x.CapHvm) + xc.cap_pv =3D C.bool(x.CapPv) + xc.cap_hvm_directio =3D C.bool(x.CapHvmDirectio) + xc.cap_hap =3D C.bool(x.CapHap) + xc.cap_shadow =3D C.bool(x.CapShadow) + xc.cap_iommu_hap_pt_share =3D C.bool(x.CapIommuHapPtShare) + return xc, nil +} + func (x *Connectorinfo) fromC(xc *C.libxl_connectorinfo) error { x.UniqueId =3D C.GoString(xc.unique_id) x.Width =3D uint32(xc.width) @@ -1429,6 +2272,18 @@ func (x *Connectorinfo) fromC(xc *C.libxl_connectori= nfo) error { return nil } =20 +func (x *Connectorinfo) toC() (xc C.libxl_connectorinfo, err error) { + C.libxl_connectorinfo_init(&xc) + xc.unique_id =3D C.CString(x.UniqueId) + xc.width =3D C.uint32_t(x.Width) + xc.height =3D C.uint32_t(x.Height) + xc.req_evtch =3D C.int(x.ReqEvtch) + xc.req_rref =3D C.int(x.ReqRref) + xc.evt_evtch =3D C.int(x.EvtEvtch) + xc.evt_rref =3D C.int(x.EvtRref) + return xc, nil +} + func (x *Vdisplinfo) fromC(xc *C.libxl_vdisplinfo) error { x.Backend =3D C.GoString(xc.backend) x.BackendId =3D uint32(xc.backend_id) @@ -1450,12 +2305,31 @@ func (x *Vdisplinfo) fromC(xc *C.libxl_vdisplinfo) = error { return nil } =20 +func (x *Vdisplinfo) toC() (xc C.libxl_vdisplinfo, err error) { + C.libxl_vdisplinfo_init(&xc) + xc.backend =3D C.CString(x.Backend) + xc.backend_id =3D C.uint32_t(x.BackendId) + xc.frontend =3D C.CString(x.Frontend) + xc.frontend_id =3D C.uint32_t(x.FrontendId) + xc.devid =3D C.libxl_devid(x.Devid) + xc.state =3D C.int(x.State) + xc.be_alloc =3D C.bool(x.BeAlloc) + return xc, nil +} + func (x *Streaminfo) fromC(xc *C.libxl_streaminfo) error { x.ReqEvtch =3D int(xc.req_evtch) x.ReqRref =3D int(xc.req_rref) return nil } =20 +func (x *Streaminfo) toC() (xc C.libxl_streaminfo, err error) { + C.libxl_streaminfo_init(&xc) + xc.req_evtch =3D C.int(x.ReqEvtch) + xc.req_rref =3D C.int(x.ReqRref) + return xc, nil +} + func (x *Pcminfo) fromC(xc *C.libxl_pcminfo) error { numVsndStreams :=3D int(xc.num_vsnd_streams) cStreams :=3D (*[1 << 28]C.libxl_streaminfo)(unsafe.Pointer(xc.streams))[= :numVsndStreams:numVsndStreams] @@ -1470,6 +2344,11 @@ func (x *Pcminfo) fromC(xc *C.libxl_pcminfo) error { return nil } =20 +func (x *Pcminfo) toC() (xc C.libxl_pcminfo, err error) { + C.libxl_pcminfo_init(&xc) + return xc, nil +} + func (x *Vsndinfo) fromC(xc *C.libxl_vsndinfo) error { x.Backend =3D C.GoString(xc.backend) x.BackendId =3D uint32(xc.backend_id) @@ -1490,6 +2369,17 @@ func (x *Vsndinfo) fromC(xc *C.libxl_vsndinfo) error= { return nil } =20 +func (x *Vsndinfo) toC() (xc C.libxl_vsndinfo, err error) { + C.libxl_vsndinfo_init(&xc) + xc.backend =3D C.CString(x.Backend) + xc.backend_id =3D C.uint32_t(x.BackendId) + xc.frontend =3D C.CString(x.Frontend) + xc.frontend_id =3D C.uint32_t(x.FrontendId) + xc.devid =3D C.libxl_devid(x.Devid) + xc.state =3D C.int(x.State) + return xc, nil +} + func (x *Vkbinfo) fromC(xc *C.libxl_vkbinfo) error { x.Backend =3D C.GoString(xc.backend) x.BackendId =3D uint32(xc.backend_id) @@ -1502,6 +2392,19 @@ func (x *Vkbinfo) fromC(xc *C.libxl_vkbinfo) error { return nil } =20 +func (x *Vkbinfo) toC() (xc C.libxl_vkbinfo, err error) { + C.libxl_vkbinfo_init(&xc) + xc.backend =3D C.CString(x.Backend) + xc.backend_id =3D C.uint32_t(x.BackendId) + xc.frontend =3D C.CString(x.Frontend) + xc.frontend_id =3D C.uint32_t(x.FrontendId) + xc.devid =3D C.libxl_devid(x.Devid) + xc.state =3D C.int(x.State) + xc.evtch =3D C.int(x.Evtch) + xc.rref =3D C.int(x.Rref) + return xc, nil +} + func (x *Numainfo) fromC(xc *C.libxl_numainfo) error { x.Size =3D uint64(xc.size) x.Free =3D uint64(xc.free) @@ -1514,6 +2417,13 @@ func (x *Numainfo) fromC(xc *C.libxl_numainfo) error= { return nil } =20 +func (x *Numainfo) toC() (xc C.libxl_numainfo, err error) { + C.libxl_numainfo_init(&xc) + xc.size =3D C.uint64_t(x.Size) + xc.free =3D C.uint64_t(x.Free) + return xc, nil +} + func (x *Cputopology) fromC(xc *C.libxl_cputopology) error { x.Core =3D uint32(xc.core) x.Socket =3D uint32(xc.socket) @@ -1521,6 +2431,14 @@ func (x *Cputopology) fromC(xc *C.libxl_cputopology)= error { return nil } =20 +func (x *Cputopology) toC() (xc C.libxl_cputopology, err error) { + C.libxl_cputopology_init(&xc) + xc.core =3D C.uint32_t(x.Core) + xc.socket =3D C.uint32_t(x.Socket) + xc.node =3D C.uint32_t(x.Node) + return xc, nil +} + func (x *Pcitopology) fromC(xc *C.libxl_pcitopology) error { x.Seg =3D uint16(xc.seg) x.Bus =3D byte(xc.bus) @@ -1529,6 +2447,15 @@ func (x *Pcitopology) fromC(xc *C.libxl_pcitopology)= error { return nil } =20 +func (x *Pcitopology) toC() (xc C.libxl_pcitopology, err error) { + C.libxl_pcitopology_init(&xc) + xc.seg =3D C.uint16_t(x.Seg) + xc.bus =3D C.uint8_t(x.Bus) + xc.devfn =3D C.uint8_t(x.Devfn) + xc.node =3D C.uint32_t(x.Node) + return xc, nil +} + func (x *SchedCreditParams) fromC(xc *C.libxl_sched_credit_params) error { x.TsliceMs =3D int(xc.tslice_ms) x.RatelimitUs =3D int(xc.ratelimit_us) @@ -1536,11 +2463,25 @@ func (x *SchedCreditParams) fromC(xc *C.libxl_sched= _credit_params) error { return nil } =20 +func (x *SchedCreditParams) toC() (xc C.libxl_sched_credit_params, err err= or) { + C.libxl_sched_credit_params_init(&xc) + xc.tslice_ms =3D C.int(x.TsliceMs) + xc.ratelimit_us =3D C.int(x.RatelimitUs) + xc.vcpu_migr_delay_us =3D C.int(x.VcpuMigrDelayUs) + return xc, nil +} + func (x *SchedCredit2Params) fromC(xc *C.libxl_sched_credit2_params) error= { x.RatelimitUs =3D int(xc.ratelimit_us) return nil } =20 +func (x *SchedCredit2Params) toC() (xc C.libxl_sched_credit2_params, err e= rror) { + C.libxl_sched_credit2_params_init(&xc) + xc.ratelimit_us =3D C.int(x.RatelimitUs) + return xc, nil +} + func (x *DomainRemusInfo) fromC(xc *C.libxl_domain_remus_info) error { x.Interval =3D int(xc.interval) var defboolAllowUnsafe Defbool @@ -1582,6 +2523,48 @@ func (x *DomainRemusInfo) fromC(xc *C.libxl_domain_r= emus_info) error { return nil } =20 +func (x *DomainRemusInfo) toC() (xc C.libxl_domain_remus_info, err error) { + C.libxl_domain_remus_info_init(&xc) + xc.interval =3D C.int(x.Interval) + xc.allow_unsafe, err =3D x.AllowUnsafe.toC() + if err !=3D nil { + C.libxl_domain_remus_info_dispose(&xc) + return xc, err + } + xc.blackhole, err =3D x.Blackhole.toC() + if err !=3D nil { + C.libxl_domain_remus_info_dispose(&xc) + return xc, err + } + xc.compression, err =3D x.Compression.toC() + if err !=3D nil { + C.libxl_domain_remus_info_dispose(&xc) + return xc, err + } + xc.netbuf, err =3D x.Netbuf.toC() + if err !=3D nil { + C.libxl_domain_remus_info_dispose(&xc) + return xc, err + } + xc.netbufscript =3D C.CString(x.Netbufscript) + xc.diskbuf, err =3D x.Diskbuf.toC() + if err !=3D nil { + C.libxl_domain_remus_info_dispose(&xc) + return xc, err + } + xc.colo, err =3D x.Colo.toC() + if err !=3D nil { + C.libxl_domain_remus_info_dispose(&xc) + return xc, err + } + xc.userspace_colo_proxy, err =3D x.UserspaceColoProxy.toC() + if err !=3D nil { + C.libxl_domain_remus_info_dispose(&xc) + return xc, err + } + return xc, nil +} + func (x *Event) fromC(xc *C.libxl_event) error { var evLinkLink EvLink if err :=3D evLinkLink.fromC(&xc.link); err !=3D nil { @@ -1654,6 +2637,23 @@ func (x *EventTypeUnionOperationComplete) fromC(xc *= C.libxl_event) error { return nil } =20 +func (x *Event) toC() (xc C.libxl_event, err error) { + C.libxl_event_init(&xc) + xc.link, err =3D x.Link.toC() + if err !=3D nil { + C.libxl_event_dispose(&xc) + return xc, err + } + xc.domid =3D C.libxl_domid(x.Domid) + xc.domuuid, err =3D x.Domuuid.toC() + if err !=3D nil { + C.libxl_event_dispose(&xc) + return xc, err + } + xc.for_user =3D C.uint64_t(x.ForUser) + return xc, nil +} + func (x *PsrCatInfo) fromC(xc *C.libxl_psr_cat_info) error { x.Id =3D uint32(xc.id) x.CosMax =3D uint32(xc.cos_max) @@ -1662,6 +2662,15 @@ func (x *PsrCatInfo) fromC(xc *C.libxl_psr_cat_info)= error { return nil } =20 +func (x *PsrCatInfo) toC() (xc C.libxl_psr_cat_info, err error) { + C.libxl_psr_cat_info_init(&xc) + xc.id =3D C.uint32_t(x.Id) + xc.cos_max =3D C.uint32_t(x.CosMax) + xc.cbm_len =3D C.uint32_t(x.CbmLen) + xc.cdp_enabled =3D C.bool(x.CdpEnabled) + return xc, nil +} + func (x *PsrHwInfo) fromC(xc *C.libxl_psr_hw_info) error { x.Id =3D uint32(xc.id) x.Type =3D PsrFeatType(xc._type) @@ -1707,3 +2716,9 @@ func (x *PsrHwInfoTypeUnionMba) fromC(xc *C.libxl_psr= _hw_info) error { x.Linear =3D bool(tmp.linear) return nil } + +func (x *PsrHwInfo) toC() (xc C.libxl_psr_hw_info, err error) { + C.libxl_psr_hw_info_init(&xc) + xc.id =3D C.uint32_t(x.Id) + return xc, nil +} --=20 2.19.1 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel