1// DO NOT EDIT.
2//
3// This file is generated by:
4// gengotypes.py ../../libxl/libxl_types.idl
5//
6
7package xenlight
8
9import (
10"unsafe"
11"errors"
12"fmt"
13)
14/*
15#cgo LDFLAGS: -lxenlight
16#include <stdlib.h>
17#include <libxl.h>
18
19typedef typeof(((struct libxl_channelinfo *)NULL)->u.pty)libxl_channelinfo_connection_union_pty;
20typedef typeof(((struct libxl_domain_build_info *)NULL)->u.hvm)libxl_domain_build_info_type_union_hvm;
21typedef typeof(((struct libxl_domain_build_info *)NULL)->u.pv)libxl_domain_build_info_type_union_pv;
22typedef typeof(((struct libxl_domain_build_info *)NULL)->u.pvh)libxl_domain_build_info_type_union_pvh;
23typedef typeof(((struct libxl_device_usbdev *)NULL)->u.hostdev)libxl_device_usbdev_type_union_hostdev;
24typedef typeof(((struct libxl_device_channel *)NULL)->u.socket)libxl_device_channel_connection_union_socket;
25typedef typeof(((struct libxl_event *)NULL)->u.domain_shutdown)libxl_event_type_union_domain_shutdown;
26typedef typeof(((struct libxl_event *)NULL)->u.disk_eject)libxl_event_type_union_disk_eject;
27typedef typeof(((struct libxl_event *)NULL)->u.operation_complete)libxl_event_type_union_operation_complete;
28typedef typeof(((struct libxl_psr_hw_info *)NULL)->u.cat)libxl_psr_hw_info_type_union_cat;
29typedef typeof(((struct libxl_psr_hw_info *)NULL)->u.mba)libxl_psr_hw_info_type_union_mba;
30*/
31import "C"
32// NewIoportRange returns an instance of IoportRange initialized with defaults.
33func NewIoportRange() (*IoportRange, error) {
34var (
35x IoportRange
36xc C.libxl_ioport_range)
37
38C.libxl_ioport_range_init(&xc)
39defer C.libxl_ioport_range_dispose(&xc)
40
41if err := x.fromC(&xc); err != nil {
42return nil, err }
43
44return &x, nil}
45
46func (x *IoportRange) fromC(xc *C.libxl_ioport_range) error {
47 x.First = uint32(xc.first)
48x.Number = uint32(xc.number)
49
50 return nil}
51
52func (x *IoportRange) toC(xc *C.libxl_ioport_range) (err error){defer func(){
53if err != nil{
54C.libxl_ioport_range_dispose(xc)}
55}()
56
57xc.first = C.uint32_t(x.First)
58xc.number = C.uint32_t(x.Number)
59
60 return nil
61 }
62
63// NewIomemRange returns an instance of IomemRange initialized with defaults.
64func NewIomemRange() (*IomemRange, error) {
65var (
66x IomemRange
67xc C.libxl_iomem_range)
68
69C.libxl_iomem_range_init(&xc)
70defer C.libxl_iomem_range_dispose(&xc)
71
72if err := x.fromC(&xc); err != nil {
73return nil, err }
74
75return &x, nil}
76
77func (x *IomemRange) fromC(xc *C.libxl_iomem_range) error {
78 x.Start = uint64(xc.start)
79x.Number = uint64(xc.number)
80x.Gfn = uint64(xc.gfn)
81
82 return nil}
83
84func (x *IomemRange) toC(xc *C.libxl_iomem_range) (err error){defer func(){
85if err != nil{
86C.libxl_iomem_range_dispose(xc)}
87}()
88
89xc.start = C.uint64_t(x.Start)
90xc.number = C.uint64_t(x.Number)
91xc.gfn = C.uint64_t(x.Gfn)
92
93 return nil
94 }
95
96// NewVgaInterfaceInfo returns an instance of VgaInterfaceInfo initialized with defaults.
97func NewVgaInterfaceInfo() (*VgaInterfaceInfo, error) {
98var (
99x VgaInterfaceInfo
100xc C.libxl_vga_interface_info)
101
102C.libxl_vga_interface_info_init(&xc)
103defer C.libxl_vga_interface_info_dispose(&xc)
104
105if err := x.fromC(&xc); err != nil {
106return nil, err }
107
108return &x, nil}
109
110func (x *VgaInterfaceInfo) fromC(xc *C.libxl_vga_interface_info) error {
111 x.Kind = VgaInterfaceType(xc.kind)
112
113 return nil}
114
115func (x *VgaInterfaceInfo) toC(xc *C.libxl_vga_interface_info) (err error){defer func(){
116if err != nil{
117C.libxl_vga_interface_info_dispose(xc)}
118}()
119
120xc.kind = C.libxl_vga_interface_type(x.Kind)
121
122 return nil
123 }
124
125// NewVncInfo returns an instance of VncInfo initialized with defaults.
126func NewVncInfo() (*VncInfo, error) {
127var (
128x VncInfo
129xc C.libxl_vnc_info)
130
131C.libxl_vnc_info_init(&xc)
132defer C.libxl_vnc_info_dispose(&xc)
133
134if err := x.fromC(&xc); err != nil {
135return nil, err }
136
137return &x, nil}
138
139func (x *VncInfo) fromC(xc *C.libxl_vnc_info) error {
140 if err := x.Enable.fromC(&xc.enable);err != nil {
141return fmt.Errorf("converting field Enable: %v", err)
142}
143x.Listen = C.GoString(xc.listen)
144x.Passwd = C.GoString(xc.passwd)
145x.Display = int(xc.display)
146if err := x.Findunused.fromC(&xc.findunused);err != nil {
147return fmt.Errorf("converting field Findunused: %v", err)
148}
149
150 return nil}
151
152func (x *VncInfo) toC(xc *C.libxl_vnc_info) (err error){defer func(){
153if err != nil{
154C.libxl_vnc_info_dispose(xc)}
155}()
156
157if err := x.Enable.toC(&xc.enable); err != nil {
158return fmt.Errorf("converting field Enable: %v", err)
159}
160if x.Listen != "" {
161xc.listen = C.CString(x.Listen)}
162if x.Passwd != "" {
163xc.passwd = C.CString(x.Passwd)}
164xc.display = C.int(x.Display)
165if err := x.Findunused.toC(&xc.findunused); err != nil {
166return fmt.Errorf("converting field Findunused: %v", err)
167}
168
169 return nil
170 }
171
172// NewSpiceInfo returns an instance of SpiceInfo initialized with defaults.
173func NewSpiceInfo() (*SpiceInfo, error) {
174var (
175x SpiceInfo
176xc C.libxl_spice_info)
177
178C.libxl_spice_info_init(&xc)
179defer C.libxl_spice_info_dispose(&xc)
180
181if err := x.fromC(&xc); err != nil {
182return nil, err }
183
184return &x, nil}
185
186func (x *SpiceInfo) fromC(xc *C.libxl_spice_info) error {
187 if err := x.Enable.fromC(&xc.enable);err != nil {
188return fmt.Errorf("converting field Enable: %v", err)
189}
190x.Port = int(xc.port)
191x.TlsPort = int(xc.tls_port)
192x.Host = C.GoString(xc.host)
193if err := x.DisableTicketing.fromC(&xc.disable_ticketing);err != nil {
194return fmt.Errorf("converting field DisableTicketing: %v", err)
195}
196x.Passwd = C.GoString(xc.passwd)
197if err := x.AgentMouse.fromC(&xc.agent_mouse);err != nil {
198return fmt.Errorf("converting field AgentMouse: %v", err)
199}
200if err := x.Vdagent.fromC(&xc.vdagent);err != nil {
201return fmt.Errorf("converting field Vdagent: %v", err)
202}
203if err := x.ClipboardSharing.fromC(&xc.clipboard_sharing);err != nil {
204return fmt.Errorf("converting field ClipboardSharing: %v", err)
205}
206x.Usbredirection = int(xc.usbredirection)
207x.ImageCompression = C.GoString(xc.image_compression)
208x.StreamingVideo = C.GoString(xc.streaming_video)
209
210 return nil}
211
212func (x *SpiceInfo) toC(xc *C.libxl_spice_info) (err error){defer func(){
213if err != nil{
214C.libxl_spice_info_dispose(xc)}
215}()
216
217if err := x.Enable.toC(&xc.enable); err != nil {
218return fmt.Errorf("converting field Enable: %v", err)
219}
220xc.port = C.int(x.Port)
221xc.tls_port = C.int(x.TlsPort)
222if x.Host != "" {
223xc.host = C.CString(x.Host)}
224if err := x.DisableTicketing.toC(&xc.disable_ticketing); err != nil {
225return fmt.Errorf("converting field DisableTicketing: %v", err)
226}
227if x.Passwd != "" {
228xc.passwd = C.CString(x.Passwd)}
229if err := x.AgentMouse.toC(&xc.agent_mouse); err != nil {
230return fmt.Errorf("converting field AgentMouse: %v", err)
231}
232if err := x.Vdagent.toC(&xc.vdagent); err != nil {
233return fmt.Errorf("converting field Vdagent: %v", err)
234}
235if err := x.ClipboardSharing.toC(&xc.clipboard_sharing); err != nil {
236return fmt.Errorf("converting field ClipboardSharing: %v", err)
237}
238xc.usbredirection = C.int(x.Usbredirection)
239if x.ImageCompression != "" {
240xc.image_compression = C.CString(x.ImageCompression)}
241if x.StreamingVideo != "" {
242xc.streaming_video = C.CString(x.StreamingVideo)}
243
244 return nil
245 }
246
247// NewSdlInfo returns an instance of SdlInfo initialized with defaults.
248func NewSdlInfo() (*SdlInfo, error) {
249var (
250x SdlInfo
251xc C.libxl_sdl_info)
252
253C.libxl_sdl_info_init(&xc)
254defer C.libxl_sdl_info_dispose(&xc)
255
256if err := x.fromC(&xc); err != nil {
257return nil, err }
258
259return &x, nil}
260
261func (x *SdlInfo) fromC(xc *C.libxl_sdl_info) error {
262 if err := x.Enable.fromC(&xc.enable);err != nil {
263return fmt.Errorf("converting field Enable: %v", err)
264}
265if err := x.Opengl.fromC(&xc.opengl);err != nil {
266return fmt.Errorf("converting field Opengl: %v", err)
267}
268x.Display = C.GoString(xc.display)
269x.Xauthority = C.GoString(xc.xauthority)
270
271 return nil}
272
273func (x *SdlInfo) toC(xc *C.libxl_sdl_info) (err error){defer func(){
274if err != nil{
275C.libxl_sdl_info_dispose(xc)}
276}()
277
278if err := x.Enable.toC(&xc.enable); err != nil {
279return fmt.Errorf("converting field Enable: %v", err)
280}
281if err := x.Opengl.toC(&xc.opengl); err != nil {
282return fmt.Errorf("converting field Opengl: %v", err)
283}
284if x.Display != "" {
285xc.display = C.CString(x.Display)}
286if x.Xauthority != "" {
287xc.xauthority = C.CString(x.Xauthority)}
288
289 return nil
290 }
291
292// NewDominfo returns an instance of Dominfo initialized with defaults.
293func NewDominfo() (*Dominfo, error) {
294var (
295x Dominfo
296xc C.libxl_dominfo)
297
298C.libxl_dominfo_init(&xc)
299defer C.libxl_dominfo_dispose(&xc)
300
301if err := x.fromC(&xc); err != nil {
302return nil, err }
303
304return &x, nil}
305
306func (x *Dominfo) fromC(xc *C.libxl_dominfo) error {
307 if err := x.Uuid.fromC(&xc.uuid);err != nil {
308return fmt.Errorf("converting field Uuid: %v", err)
309}
310x.Domid = Domid(xc.domid)
311x.Ssidref = uint32(xc.ssidref)
312x.SsidLabel = C.GoString(xc.ssid_label)
313x.Running = bool(xc.running)
314x.Blocked = bool(xc.blocked)
315x.Paused = bool(xc.paused)
316x.Shutdown = bool(xc.shutdown)
317x.Dying = bool(xc.dying)
318x.NeverStop = bool(xc.never_stop)
319x.ShutdownReason = ShutdownReason(xc.shutdown_reason)
320x.OutstandingMemkb = uint64(xc.outstanding_memkb)
321x.CurrentMemkb = uint64(xc.current_memkb)
322x.SharedMemkb = uint64(xc.shared_memkb)
323x.PagedMemkb = uint64(xc.paged_memkb)
324x.MaxMemkb = uint64(xc.max_memkb)
325x.CpuTime = uint64(xc.cpu_time)
326x.VcpuMaxId = uint32(xc.vcpu_max_id)
327x.VcpuOnline = uint32(xc.vcpu_online)
328x.Cpupool = uint32(xc.cpupool)
329x.DomainType = DomainType(xc.domain_type)
330
331 return nil}
332
333func (x *Dominfo) toC(xc *C.libxl_dominfo) (err error){defer func(){
334if err != nil{
335C.libxl_dominfo_dispose(xc)}
336}()
337
338if err := x.Uuid.toC(&xc.uuid); err != nil {
339return fmt.Errorf("converting field Uuid: %v", err)
340}
341xc.domid = C.libxl_domid(x.Domid)
342xc.ssidref = C.uint32_t(x.Ssidref)
343if x.SsidLabel != "" {
344xc.ssid_label = C.CString(x.SsidLabel)}
345xc.running = C.bool(x.Running)
346xc.blocked = C.bool(x.Blocked)
347xc.paused = C.bool(x.Paused)
348xc.shutdown = C.bool(x.Shutdown)
349xc.dying = C.bool(x.Dying)
350xc.never_stop = C.bool(x.NeverStop)
351xc.shutdown_reason = C.libxl_shutdown_reason(x.ShutdownReason)
352xc.outstanding_memkb = C.uint64_t(x.OutstandingMemkb)
353xc.current_memkb = C.uint64_t(x.CurrentMemkb)
354xc.shared_memkb = C.uint64_t(x.SharedMemkb)
355xc.paged_memkb = C.uint64_t(x.PagedMemkb)
356xc.max_memkb = C.uint64_t(x.MaxMemkb)
357xc.cpu_time = C.uint64_t(x.CpuTime)
358xc.vcpu_max_id = C.uint32_t(x.VcpuMaxId)
359xc.vcpu_online = C.uint32_t(x.VcpuOnline)
360xc.cpupool = C.uint32_t(x.Cpupool)
361xc.domain_type = C.libxl_domain_type(x.DomainType)
362
363 return nil
364 }
365
366// NewCpupoolinfo returns an instance of Cpupoolinfo initialized with defaults.
367func NewCpupoolinfo() (*Cpupoolinfo, error) {
368var (
369x Cpupoolinfo
370xc C.libxl_cpupoolinfo)
371
372C.libxl_cpupoolinfo_init(&xc)
373defer C.libxl_cpupoolinfo_dispose(&xc)
374
375if err := x.fromC(&xc); err != nil {
376return nil, err }
377
378return &x, nil}
379
380func (x *Cpupoolinfo) fromC(xc *C.libxl_cpupoolinfo) error {
381 x.Poolid = uint32(xc.poolid)
382x.PoolName = C.GoString(xc.pool_name)
383x.Sched = Scheduler(xc.sched)
384x.NDom = uint32(xc.n_dom)
385if err := x.Cpumap.fromC(&xc.cpumap);err != nil {
386return fmt.Errorf("converting field Cpumap: %v", err)
387}
388
389 return nil}
390
391func (x *Cpupoolinfo) toC(xc *C.libxl_cpupoolinfo) (err error){defer func(){
392if err != nil{
393C.libxl_cpupoolinfo_dispose(xc)}
394}()
395
396xc.poolid = C.uint32_t(x.Poolid)
397if x.PoolName != "" {
398xc.pool_name = C.CString(x.PoolName)}
399xc.sched = C.libxl_scheduler(x.Sched)
400xc.n_dom = C.uint32_t(x.NDom)
401if err := x.Cpumap.toC(&xc.cpumap); err != nil {
402return fmt.Errorf("converting field Cpumap: %v", err)
403}
404
405 return nil
406 }
407
408// NewChannelinfo returns an instance of Channelinfo initialized with defaults.
409func NewChannelinfo(connection ChannelConnection) (*Channelinfo, error) {
410var (
411x Channelinfo
412xc C.libxl_channelinfo)
413
414C.libxl_channelinfo_init(&xc)
415C.libxl_channelinfo_init_connection(&xc, C.libxl_channel_connection(connection))
416defer C.libxl_channelinfo_dispose(&xc)
417
418if err := x.fromC(&xc); err != nil {
419return nil, err }
420
421return &x, nil}
422
423func (x *Channelinfo) fromC(xc *C.libxl_channelinfo) error {
424 x.Backend = C.GoString(xc.backend)
425x.BackendId = uint32(xc.backend_id)
426x.Frontend = C.GoString(xc.frontend)
427x.FrontendId = uint32(xc.frontend_id)
428x.Devid = Devid(xc.devid)
429x.State = int(xc.state)
430x.Evtch = int(xc.evtch)
431x.Rref = int(xc.rref)
432x.Connection = ChannelConnection(xc.connection)
433switch x.Connection{
434case ChannelConnectionPty:
435var connectionPty ChannelinfoConnectionUnionPty
436if err := connectionPty.fromC(xc);err != nil {
437 return fmt.Errorf("converting field connectionPty: %v", err)
438}
439x.ConnectionUnion = connectionPty
440case ChannelConnectionSocket:
441x.ConnectionUnion = nil
442case ChannelConnectionUnknown:
443x.ConnectionUnion = nil
444default:
445return fmt.Errorf("invalid union key '%v'", x.Connection)}
446
447 return nil}
448
449func (x *ChannelinfoConnectionUnionPty) fromC(xc *C.libxl_channelinfo) error {
450if ChannelConnection(xc.connection) != ChannelConnectionPty {
451return errors.New("expected union key ChannelConnectionPty")
452}
453
454tmp := (*C.libxl_channelinfo_connection_union_pty)(unsafe.Pointer(&xc.u[0]))
455x.Path = C.GoString(tmp.path)
456return nil
457}
458
459func (x *Channelinfo) toC(xc *C.libxl_channelinfo) (err error){defer func(){
460if err != nil{
461C.libxl_channelinfo_dispose(xc)}
462}()
463
464if x.Backend != "" {
465xc.backend = C.CString(x.Backend)}
466xc.backend_id = C.uint32_t(x.BackendId)
467if x.Frontend != "" {
468xc.frontend = C.CString(x.Frontend)}
469xc.frontend_id = C.uint32_t(x.FrontendId)
470xc.devid = C.libxl_devid(x.Devid)
471xc.state = C.int(x.State)
472xc.evtch = C.int(x.Evtch)
473xc.rref = C.int(x.Rref)
474xc.connection = C.libxl_channel_connection(x.Connection)
475switch x.Connection{
476case ChannelConnectionUnknown:
477break
478case ChannelConnectionPty:
479tmp, ok := x.ConnectionUnion.(ChannelinfoConnectionUnionPty)
480if !ok {
481return errors.New("wrong type for union key connection")
482}
483var pty C.libxl_channelinfo_connection_union_pty
484if tmp.Path != "" {
485pty.path = C.CString(tmp.Path)}
486ptyBytes := C.GoBytes(unsafe.Pointer(&pty),C.sizeof_libxl_channelinfo_connection_union_pty)
487copy(xc.u[:],ptyBytes)
488case ChannelConnectionSocket:
489break
490default:
491return fmt.Errorf("invalid union key '%v'", x.Connection)}
492
493 return nil
494 }
495
496// NewVminfo returns an instance of Vminfo initialized with defaults.
497func NewVminfo() (*Vminfo, error) {
498var (
499x Vminfo
500xc C.libxl_vminfo)
501
502C.libxl_vminfo_init(&xc)
503defer C.libxl_vminfo_dispose(&xc)
504
505if err := x.fromC(&xc); err != nil {
506return nil, err }
507
508return &x, nil}
509
510func (x *Vminfo) fromC(xc *C.libxl_vminfo) error {
511 if err := x.Uuid.fromC(&xc.uuid);err != nil {
512return fmt.Errorf("converting field Uuid: %v", err)
513}
514x.Domid = Domid(xc.domid)
515
516 return nil}
517
518func (x *Vminfo) toC(xc *C.libxl_vminfo) (err error){defer func(){
519if err != nil{
520C.libxl_vminfo_dispose(xc)}
521}()
522
523if err := x.Uuid.toC(&xc.uuid); err != nil {
524return fmt.Errorf("converting field Uuid: %v", err)
525}
526xc.domid = C.libxl_domid(x.Domid)
527
528 return nil
529 }
530
531// NewVersionInfo returns an instance of VersionInfo initialized with defaults.
532func NewVersionInfo() (*VersionInfo, error) {
533var (
534x VersionInfo
535xc C.libxl_version_info)
536
537C.libxl_version_info_init(&xc)
538defer C.libxl_version_info_dispose(&xc)
539
540if err := x.fromC(&xc); err != nil {
541return nil, err }
542
543return &x, nil}
544
545func (x *VersionInfo) fromC(xc *C.libxl_version_info) error {
546 x.XenVersionMajor = int(xc.xen_version_major)
547x.XenVersionMinor = int(xc.xen_version_minor)
548x.XenVersionExtra = C.GoString(xc.xen_version_extra)
549x.Compiler = C.GoString(xc.compiler)
550x.CompileBy = C.GoString(xc.compile_by)
551x.CompileDomain = C.GoString(xc.compile_domain)
552x.CompileDate = C.GoString(xc.compile_date)
553x.Capabilities = C.GoString(xc.capabilities)
554x.Changeset = C.GoString(xc.changeset)
555x.VirtStart = uint64(xc.virt_start)
556x.Pagesize = int(xc.pagesize)
557x.Commandline = C.GoString(xc.commandline)
558x.BuildId = C.GoString(xc.build_id)
559
560 return nil}
561
562func (x *VersionInfo) toC(xc *C.libxl_version_info) (err error){defer func(){
563if err != nil{
564C.libxl_version_info_dispose(xc)}
565}()
566
567xc.xen_version_major = C.int(x.XenVersionMajor)
568xc.xen_version_minor = C.int(x.XenVersionMinor)
569if x.XenVersionExtra != "" {
570xc.xen_version_extra = C.CString(x.XenVersionExtra)}
571if x.Compiler != "" {
572xc.compiler = C.CString(x.Compiler)}
573if x.CompileBy != "" {
574xc.compile_by = C.CString(x.CompileBy)}
575if x.CompileDomain != "" {
576xc.compile_domain = C.CString(x.CompileDomain)}
577if x.CompileDate != "" {
578xc.compile_date = C.CString(x.CompileDate)}
579if x.Capabilities != "" {
580xc.capabilities = C.CString(x.Capabilities)}
581if x.Changeset != "" {
582xc.changeset = C.CString(x.Changeset)}
583xc.virt_start = C.uint64_t(x.VirtStart)
584xc.pagesize = C.int(x.Pagesize)
585if x.Commandline != "" {
586xc.commandline = C.CString(x.Commandline)}
587if x.BuildId != "" {
588xc.build_id = C.CString(x.BuildId)}
589
590 return nil
591 }
592
593// NewDomainCreateInfo returns an instance of DomainCreateInfo initialized with defaults.
594func NewDomainCreateInfo() (*DomainCreateInfo, error) {
595var (
596x DomainCreateInfo
597xc C.libxl_domain_create_info)
598
599C.libxl_domain_create_info_init(&xc)
600defer C.libxl_domain_create_info_dispose(&xc)
601
602if err := x.fromC(&xc); err != nil {
603return nil, err }
604
605return &x, nil}
606
607func (x *DomainCreateInfo) fromC(xc *C.libxl_domain_create_info) error {
608 x.Type = DomainType(xc._type)
609if err := x.Hap.fromC(&xc.hap);err != nil {
610return fmt.Errorf("converting field Hap: %v", err)
611}
612if err := x.Oos.fromC(&xc.oos);err != nil {
613return fmt.Errorf("converting field Oos: %v", err)
614}
615x.Ssidref = uint32(xc.ssidref)
616x.SsidLabel = C.GoString(xc.ssid_label)
617x.Name = C.GoString(xc.name)
618x.Domid = Domid(xc.domid)
619if err := x.Uuid.fromC(&xc.uuid);err != nil {
620return fmt.Errorf("converting field Uuid: %v", err)
621}
622if err := x.Xsdata.fromC(&xc.xsdata);err != nil {
623return fmt.Errorf("converting field Xsdata: %v", err)
624}
625if err := x.Platformdata.fromC(&xc.platformdata);err != nil {
626return fmt.Errorf("converting field Platformdata: %v", err)
627}
628x.Poolid = uint32(xc.poolid)
629x.PoolName = C.GoString(xc.pool_name)
630if err := x.RunHotplugScripts.fromC(&xc.run_hotplug_scripts);err != nil {
631return fmt.Errorf("converting field RunHotplugScripts: %v", err)
632}
633if err := x.DriverDomain.fromC(&xc.driver_domain);err != nil {
634return fmt.Errorf("converting field DriverDomain: %v", err)
635}
636x.Passthrough = Passthrough(xc.passthrough)
637if err := x.XendSuspendEvtchnCompat.fromC(&xc.xend_suspend_evtchn_compat);err != nil {
638return fmt.Errorf("converting field XendSuspendEvtchnCompat: %v", err)
639}
640
641 return nil}
642
643func (x *DomainCreateInfo) toC(xc *C.libxl_domain_create_info) (err error){defer func(){
644if err != nil{
645C.libxl_domain_create_info_dispose(xc)}
646}()
647
648xc._type = C.libxl_domain_type(x.Type)
649if err := x.Hap.toC(&xc.hap); err != nil {
650return fmt.Errorf("converting field Hap: %v", err)
651}
652if err := x.Oos.toC(&xc.oos); err != nil {
653return fmt.Errorf("converting field Oos: %v", err)
654}
655xc.ssidref = C.uint32_t(x.Ssidref)
656if x.SsidLabel != "" {
657xc.ssid_label = C.CString(x.SsidLabel)}
658if x.Name != "" {
659xc.name = C.CString(x.Name)}
660xc.domid = C.libxl_domid(x.Domid)
661if err := x.Uuid.toC(&xc.uuid); err != nil {
662return fmt.Errorf("converting field Uuid: %v", err)
663}
664if err := x.Xsdata.toC(&xc.xsdata); err != nil {
665return fmt.Errorf("converting field Xsdata: %v", err)
666}
667if err := x.Platformdata.toC(&xc.platformdata); err != nil {
668return fmt.Errorf("converting field Platformdata: %v", err)
669}
670xc.poolid = C.uint32_t(x.Poolid)
671if x.PoolName != "" {
672xc.pool_name = C.CString(x.PoolName)}
673if err := x.RunHotplugScripts.toC(&xc.run_hotplug_scripts); err != nil {
674return fmt.Errorf("converting field RunHotplugScripts: %v", err)
675}
676if err := x.DriverDomain.toC(&xc.driver_domain); err != nil {
677return fmt.Errorf("converting field DriverDomain: %v", err)
678}
679xc.passthrough = C.libxl_passthrough(x.Passthrough)
680if err := x.XendSuspendEvtchnCompat.toC(&xc.xend_suspend_evtchn_compat); err != nil {
681return fmt.Errorf("converting field XendSuspendEvtchnCompat: %v", err)
682}
683
684 return nil
685 }
686
687// NewDomainRestoreParams returns an instance of DomainRestoreParams initialized with defaults.
688func NewDomainRestoreParams() (*DomainRestoreParams, error) {
689var (
690x DomainRestoreParams
691xc C.libxl_domain_restore_params)
692
693C.libxl_domain_restore_params_init(&xc)
694defer C.libxl_domain_restore_params_dispose(&xc)
695
696if err := x.fromC(&xc); err != nil {
697return nil, err }
698
699return &x, nil}
700
701func (x *DomainRestoreParams) fromC(xc *C.libxl_domain_restore_params) error {
702 x.CheckpointedStream = int(xc.checkpointed_stream)
703x.StreamVersion = uint32(xc.stream_version)
704x.ColoProxyScript = C.GoString(xc.colo_proxy_script)
705if err := x.UserspaceColoProxy.fromC(&xc.userspace_colo_proxy);err != nil {
706return fmt.Errorf("converting field UserspaceColoProxy: %v", err)
707}
708
709 return nil}
710
711func (x *DomainRestoreParams) toC(xc *C.libxl_domain_restore_params) (err error){defer func(){
712if err != nil{
713C.libxl_domain_restore_params_dispose(xc)}
714}()
715
716xc.checkpointed_stream = C.int(x.CheckpointedStream)
717xc.stream_version = C.uint32_t(x.StreamVersion)
718if x.ColoProxyScript != "" {
719xc.colo_proxy_script = C.CString(x.ColoProxyScript)}
720if err := x.UserspaceColoProxy.toC(&xc.userspace_colo_proxy); err != nil {
721return fmt.Errorf("converting field UserspaceColoProxy: %v", err)
722}
723
724 return nil
725 }
726
727// NewSchedParams returns an instance of SchedParams initialized with defaults.
728func NewSchedParams() (*SchedParams, error) {
729var (
730x SchedParams
731xc C.libxl_sched_params)
732
733C.libxl_sched_params_init(&xc)
734defer C.libxl_sched_params_dispose(&xc)
735
736if err := x.fromC(&xc); err != nil {
737return nil, err }
738
739return &x, nil}
740
741func (x *SchedParams) fromC(xc *C.libxl_sched_params) error {
742 x.Vcpuid = int(xc.vcpuid)
743x.Weight = int(xc.weight)
744x.Cap = int(xc.cap)
745x.Period = int(xc.period)
746x.Extratime = int(xc.extratime)
747x.Budget = int(xc.budget)
748
749 return nil}
750
751func (x *SchedParams) toC(xc *C.libxl_sched_params) (err error){defer func(){
752if err != nil{
753C.libxl_sched_params_dispose(xc)}
754}()
755
756xc.vcpuid = C.int(x.Vcpuid)
757xc.weight = C.int(x.Weight)
758xc.cap = C.int(x.Cap)
759xc.period = C.int(x.Period)
760xc.extratime = C.int(x.Extratime)
761xc.budget = C.int(x.Budget)
762
763 return nil
764 }
765
766// NewVcpuSchedParams returns an instance of VcpuSchedParams initialized with defaults.
767func NewVcpuSchedParams() (*VcpuSchedParams, error) {
768var (
769x VcpuSchedParams
770xc C.libxl_vcpu_sched_params)
771
772C.libxl_vcpu_sched_params_init(&xc)
773defer C.libxl_vcpu_sched_params_dispose(&xc)
774
775if err := x.fromC(&xc); err != nil {
776return nil, err }
777
778return &x, nil}
779
780func (x *VcpuSchedParams) fromC(xc *C.libxl_vcpu_sched_params) error {
781 x.Sched = Scheduler(xc.sched)
782x.Vcpus = nil
783if n := int(xc.num_vcpus); n > 0 {
784cVcpus := (*[1<<28]C.libxl_sched_params)(unsafe.Pointer(xc.vcpus))[:n:n]
785x.Vcpus = make([]SchedParams, n)
786for i, v := range cVcpus {
787if err := x.Vcpus[i].fromC(&v); err != nil {
788return fmt.Errorf("converting field Vcpus: %v", err) }
789}
790}
791
792 return nil}
793
794func (x *VcpuSchedParams) toC(xc *C.libxl_vcpu_sched_params) (err error){defer func(){
795if err != nil{
796C.libxl_vcpu_sched_params_dispose(xc)}
797}()
798
799xc.sched = C.libxl_scheduler(x.Sched)
800if numVcpus := len(x.Vcpus); numVcpus > 0 {
801xc.vcpus = (*C.libxl_sched_params)(C.malloc(C.ulong(numVcpus)*C.sizeof_libxl_sched_params))
802xc.num_vcpus = C.int(numVcpus)
803cVcpus := (*[1<<28]C.libxl_sched_params)(unsafe.Pointer(xc.vcpus))[:numVcpus:numVcpus]
804for i,v := range x.Vcpus {
805if err := v.toC(&cVcpus[i]); err != nil {
806return fmt.Errorf("converting field Vcpus: %v", err)
807}
808}
809}
810
811 return nil
812 }
813
814// NewDomainSchedParams returns an instance of DomainSchedParams initialized with defaults.
815func NewDomainSchedParams() (*DomainSchedParams, error) {
816var (
817x DomainSchedParams
818xc C.libxl_domain_sched_params)
819
820C.libxl_domain_sched_params_init(&xc)
821defer C.libxl_domain_sched_params_dispose(&xc)
822
823if err := x.fromC(&xc); err != nil {
824return nil, err }
825
826return &x, nil}
827
828func (x *DomainSchedParams) fromC(xc *C.libxl_domain_sched_params) error {
829 x.Sched = Scheduler(xc.sched)
830x.Weight = int(xc.weight)
831x.Cap = int(xc.cap)
832x.Period = int(xc.period)
833x.Budget = int(xc.budget)
834x.Extratime = int(xc.extratime)
835x.Slice = int(xc.slice)
836x.Latency = int(xc.latency)
837
838 return nil}
839
840func (x *DomainSchedParams) toC(xc *C.libxl_domain_sched_params) (err error){defer func(){
841if err != nil{
842C.libxl_domain_sched_params_dispose(xc)}
843}()
844
845xc.sched = C.libxl_scheduler(x.Sched)
846xc.weight = C.int(x.Weight)
847xc.cap = C.int(x.Cap)
848xc.period = C.int(x.Period)
849xc.budget = C.int(x.Budget)
850xc.extratime = C.int(x.Extratime)
851xc.slice = C.int(x.Slice)
852xc.latency = C.int(x.Latency)
853
854 return nil
855 }
856
857// NewVnodeInfo returns an instance of VnodeInfo initialized with defaults.
858func NewVnodeInfo() (*VnodeInfo, error) {
859var (
860x VnodeInfo
861xc C.libxl_vnode_info)
862
863C.libxl_vnode_info_init(&xc)
864defer C.libxl_vnode_info_dispose(&xc)
865
866if err := x.fromC(&xc); err != nil {
867return nil, err }
868
869return &x, nil}
870
871func (x *VnodeInfo) fromC(xc *C.libxl_vnode_info) error {
872 x.Memkb = uint64(xc.memkb)
873x.Distances = nil
874if n := int(xc.num_distances); n > 0 {
875cDistances := (*[1<<28]C.uint32_t)(unsafe.Pointer(xc.distances))[:n:n]
876x.Distances = make([]uint32, n)
877for i, v := range cDistances {
878x.Distances[i] = uint32(v)
879}
880}
881x.Pnode = uint32(xc.pnode)
882if err := x.Vcpus.fromC(&xc.vcpus);err != nil {
883return fmt.Errorf("converting field Vcpus: %v", err)
884}
885
886 return nil}
887
888func (x *VnodeInfo) toC(xc *C.libxl_vnode_info) (err error){defer func(){
889if err != nil{
890C.libxl_vnode_info_dispose(xc)}
891}()
892
893xc.memkb = C.uint64_t(x.Memkb)
894if numDistances := len(x.Distances); numDistances > 0 {
895xc.distances = (*C.uint32_t)(C.malloc(C.size_t(numDistances*numDistances)))
896xc.num_distances = C.int(numDistances)
897cDistances := (*[1<<28]C.uint32_t)(unsafe.Pointer(xc.distances))[:numDistances:numDistances]
898for i,v := range x.Distances {
899cDistances[i] = C.uint32_t(v)
900}
901}
902xc.pnode = C.uint32_t(x.Pnode)
903if err := x.Vcpus.toC(&xc.vcpus); err != nil {
904return fmt.Errorf("converting field Vcpus: %v", err)
905}
906
907 return nil
908 }
909
910// NewRdmReserve returns an instance of RdmReserve initialized with defaults.
911func NewRdmReserve() (*RdmReserve, error) {
912var (
913x RdmReserve
914xc C.libxl_rdm_reserve)
915
916C.libxl_rdm_reserve_init(&xc)
917defer C.libxl_rdm_reserve_dispose(&xc)
918
919if err := x.fromC(&xc); err != nil {
920return nil, err }
921
922return &x, nil}
923
924func (x *RdmReserve) fromC(xc *C.libxl_rdm_reserve) error {
925 x.Strategy = RdmReserveStrategy(xc.strategy)
926x.Policy = RdmReservePolicy(xc.policy)
927
928 return nil}
929
930func (x *RdmReserve) toC(xc *C.libxl_rdm_reserve) (err error){defer func(){
931if err != nil{
932C.libxl_rdm_reserve_dispose(xc)}
933}()
934
935xc.strategy = C.libxl_rdm_reserve_strategy(x.Strategy)
936xc.policy = C.libxl_rdm_reserve_policy(x.Policy)
937
938 return nil
939 }
940
941// NewDomainBuildInfo returns an instance of DomainBuildInfo initialized with defaults.
942func NewDomainBuildInfo(dtype DomainType) (*DomainBuildInfo, error) {
943var (
944x DomainBuildInfo
945xc C.libxl_domain_build_info)
946
947C.libxl_domain_build_info_init(&xc)
948C.libxl_domain_build_info_init_type(&xc, C.libxl_domain_type(dtype))
949defer C.libxl_domain_build_info_dispose(&xc)
950
951if err := x.fromC(&xc); err != nil {
952return nil, err }
953
954return &x, nil}
955
956func (x *DomainBuildInfo) fromC(xc *C.libxl_domain_build_info) error {
957 x.MaxVcpus = int(xc.max_vcpus)
958if err := x.AvailVcpus.fromC(&xc.avail_vcpus);err != nil {
959return fmt.Errorf("converting field AvailVcpus: %v", err)
960}
961if err := x.Cpumap.fromC(&xc.cpumap);err != nil {
962return fmt.Errorf("converting field Cpumap: %v", err)
963}
964if err := x.Nodemap.fromC(&xc.nodemap);err != nil {
965return fmt.Errorf("converting field Nodemap: %v", err)
966}
967x.VcpuHardAffinity = nil
968if n := int(xc.num_vcpu_hard_affinity); n > 0 {
969cVcpuHardAffinity := (*[1<<28]C.libxl_bitmap)(unsafe.Pointer(xc.vcpu_hard_affinity))[:n:n]
970x.VcpuHardAffinity = make([]Bitmap, n)
971for i, v := range cVcpuHardAffinity {
972if err := x.VcpuHardAffinity[i].fromC(&v); err != nil {
973return fmt.Errorf("converting field VcpuHardAffinity: %v", err) }
974}
975}
976x.VcpuSoftAffinity = nil
977if n := int(xc.num_vcpu_soft_affinity); n > 0 {
978cVcpuSoftAffinity := (*[1<<28]C.libxl_bitmap)(unsafe.Pointer(xc.vcpu_soft_affinity))[:n:n]
979x.VcpuSoftAffinity = make([]Bitmap, n)
980for i, v := range cVcpuSoftAffinity {
981if err := x.VcpuSoftAffinity[i].fromC(&v); err != nil {
982return fmt.Errorf("converting field VcpuSoftAffinity: %v", err) }
983}
984}
985if err := x.NumaPlacement.fromC(&xc.numa_placement);err != nil {
986return fmt.Errorf("converting field NumaPlacement: %v", err)
987}
988x.TscMode = TscMode(xc.tsc_mode)
989x.MaxMemkb = uint64(xc.max_memkb)
990x.TargetMemkb = uint64(xc.target_memkb)
991x.VideoMemkb = uint64(xc.video_memkb)
992x.ShadowMemkb = uint64(xc.shadow_memkb)
993x.IommuMemkb = uint64(xc.iommu_memkb)
994x.RtcTimeoffset = uint32(xc.rtc_timeoffset)
995x.ExecSsidref = uint32(xc.exec_ssidref)
996x.ExecSsidLabel = C.GoString(xc.exec_ssid_label)
997if err := x.Localtime.fromC(&xc.localtime);err != nil {
998return fmt.Errorf("converting field Localtime: %v", err)
999}
1000if err := x.DisableMigrate.fromC(&xc.disable_migrate);err != nil {
1001return fmt.Errorf("converting field DisableMigrate: %v", err)
1002}
1003if err := x.Cpuid.fromC(&xc.cpuid);err != nil {
1004return fmt.Errorf("converting field Cpuid: %v", err)
1005}
1006x.BlkdevStart = C.GoString(xc.blkdev_start)
1007x.VnumaNodes = nil
1008if n := int(xc.num_vnuma_nodes); n > 0 {
1009cVnumaNodes := (*[1<<28]C.libxl_vnode_info)(unsafe.Pointer(xc.vnuma_nodes))[:n:n]
1010x.VnumaNodes = make([]VnodeInfo, n)
1011for i, v := range cVnumaNodes {
1012if err := x.VnumaNodes[i].fromC(&v); err != nil {
1013return fmt.Errorf("converting field VnumaNodes: %v", err) }
1014}
1015}
1016x.MaxGrantFrames = uint32(xc.max_grant_frames)
1017x.MaxMaptrackFrames = uint32(xc.max_maptrack_frames)
1018x.DeviceModelVersion = DeviceModelVersion(xc.device_model_version)
1019if err := x.DeviceModelStubdomain.fromC(&xc.device_model_stubdomain);err != nil {
1020return fmt.Errorf("converting field DeviceModelStubdomain: %v", err)
1021}
1022x.StubdomainMemkb = uint64(xc.stubdomain_memkb)
1023x.StubdomainKernel = C.GoString(xc.stubdomain_kernel)
1024x.StubdomainRamdisk = C.GoString(xc.stubdomain_ramdisk)
1025x.DeviceModel = C.GoString(xc.device_model)
1026x.DeviceModelSsidref = uint32(xc.device_model_ssidref)
1027x.DeviceModelSsidLabel = C.GoString(xc.device_model_ssid_label)
1028x.DeviceModelUser = C.GoString(xc.device_model_user)
1029if err := x.Extra.fromC(&xc.extra);err != nil {
1030return fmt.Errorf("converting field Extra: %v", err)
1031}
1032if err := x.ExtraPv.fromC(&xc.extra_pv);err != nil {
1033return fmt.Errorf("converting field ExtraPv: %v", err)
1034}
1035if err := x.ExtraHvm.fromC(&xc.extra_hvm);err != nil {
1036return fmt.Errorf("converting field ExtraHvm: %v", err)
1037}
1038if err := x.SchedParams.fromC(&xc.sched_params);err != nil {
1039return fmt.Errorf("converting field SchedParams: %v", err)
1040}
1041x.Ioports = nil
1042if n := int(xc.num_ioports); n > 0 {
1043cIoports := (*[1<<28]C.libxl_ioport_range)(unsafe.Pointer(xc.ioports))[:n:n]
1044x.Ioports = make([]IoportRange, n)
1045for i, v := range cIoports {
1046if err := x.Ioports[i].fromC(&v); err != nil {
1047return fmt.Errorf("converting field Ioports: %v", err) }
1048}
1049}
1050x.Irqs = nil
1051if n := int(xc.num_irqs); n > 0 {
1052cIrqs := (*[1<<28]C.uint32_t)(unsafe.Pointer(xc.irqs))[:n:n]
1053x.Irqs = make([]uint32, n)
1054for i, v := range cIrqs {
1055x.Irqs[i] = uint32(v)
1056}
1057}
1058x.Iomem = nil
1059if n := int(xc.num_iomem); n > 0 {
1060cIomem := (*[1<<28]C.libxl_iomem_range)(unsafe.Pointer(xc.iomem))[:n:n]
1061x.Iomem = make([]IomemRange, n)
1062for i, v := range cIomem {
1063if err := x.Iomem[i].fromC(&v); err != nil {
1064return fmt.Errorf("converting field Iomem: %v", err) }
1065}
1066}
1067if err := x.ClaimMode.fromC(&xc.claim_mode);err != nil {
1068return fmt.Errorf("converting field ClaimMode: %v", err)
1069}
1070x.EventChannels = uint32(xc.event_channels)
1071x.Kernel = C.GoString(xc.kernel)
1072x.Cmdline = C.GoString(xc.cmdline)
1073x.Ramdisk = C.GoString(xc.ramdisk)
1074x.DeviceTree = C.GoString(xc.device_tree)
1075if err := x.Acpi.fromC(&xc.acpi);err != nil {
1076return fmt.Errorf("converting field Acpi: %v", err)
1077}
1078x.Bootloader = C.GoString(xc.bootloader)
1079if err := x.BootloaderArgs.fromC(&xc.bootloader_args);err != nil {
1080return fmt.Errorf("converting field BootloaderArgs: %v", err)
1081}
1082x.TimerMode = TimerMode(xc.timer_mode)
1083if err := x.NestedHvm.fromC(&xc.nested_hvm);err != nil {
1084return fmt.Errorf("converting field NestedHvm: %v", err)
1085}
1086if err := x.Apic.fromC(&xc.apic);err != nil {
1087return fmt.Errorf("converting field Apic: %v", err)
1088}
1089if err := x.DmRestrict.fromC(&xc.dm_restrict);err != nil {
1090return fmt.Errorf("converting field DmRestrict: %v", err)
1091}
1092x.Tee = TeeType(xc.tee)
1093x.Type = DomainType(xc._type)
1094switch x.Type{
1095case DomainTypeHvm:
1096var typeHvm DomainBuildInfoTypeUnionHvm
1097if err := typeHvm.fromC(xc);err != nil {
1098 return fmt.Errorf("converting field typeHvm: %v", err)
1099}
1100x.TypeUnion = typeHvm
1101case DomainTypeInvalid:
1102x.TypeUnion = nil
1103case DomainTypePv:
1104var typePv DomainBuildInfoTypeUnionPv
1105if err := typePv.fromC(xc);err != nil {
1106 return fmt.Errorf("converting field typePv: %v", err)
1107}
1108x.TypeUnion = typePv
1109case DomainTypePvh:
1110var typePvh DomainBuildInfoTypeUnionPvh
1111if err := typePvh.fromC(xc);err != nil {
1112 return fmt.Errorf("converting field typePvh: %v", err)
1113}
1114x.TypeUnion = typePvh
1115default:
1116return fmt.Errorf("invalid union key '%v'", x.Type)}
1117x.ArchArm.GicVersion = GicVersion(xc.arch_arm.gic_version)
1118x.ArchArm.Vuart = VuartType(xc.arch_arm.vuart)
1119x.Altp2M = Altp2MMode(xc.altp2m)
1120
1121 return nil}
1122
1123func (x *DomainBuildInfoTypeUnionHvm) fromC(xc *C.libxl_domain_build_info) error {
1124if DomainType(xc._type) != DomainTypeHvm {
1125return errors.New("expected union key DomainTypeHvm")
1126}
1127
1128tmp := (*C.libxl_domain_build_info_type_union_hvm)(unsafe.Pointer(&xc.u[0]))
1129x.Firmware = C.GoString(tmp.firmware)
1130x.Bios = BiosType(tmp.bios)
1131if err := x.Pae.fromC(&tmp.pae);err != nil {
1132return fmt.Errorf("converting field Pae: %v", err)
1133}
1134if err := x.Apic.fromC(&tmp.apic);err != nil {
1135return fmt.Errorf("converting field Apic: %v", err)
1136}
1137if err := x.Acpi.fromC(&tmp.acpi);err != nil {
1138return fmt.Errorf("converting field Acpi: %v", err)
1139}
1140if err := x.AcpiS3.fromC(&tmp.acpi_s3);err != nil {
1141return fmt.Errorf("converting field AcpiS3: %v", err)
1142}
1143if err := x.AcpiS4.fromC(&tmp.acpi_s4);err != nil {
1144return fmt.Errorf("converting field AcpiS4: %v", err)
1145}
1146if err := x.AcpiLaptopSlate.fromC(&tmp.acpi_laptop_slate);err != nil {
1147return fmt.Errorf("converting field AcpiLaptopSlate: %v", err)
1148}
1149if err := x.Nx.fromC(&tmp.nx);err != nil {
1150return fmt.Errorf("converting field Nx: %v", err)
1151}
1152if err := x.Viridian.fromC(&tmp.viridian);err != nil {
1153return fmt.Errorf("converting field Viridian: %v", err)
1154}
1155if err := x.ViridianEnable.fromC(&tmp.viridian_enable);err != nil {
1156return fmt.Errorf("converting field ViridianEnable: %v", err)
1157}
1158if err := x.ViridianDisable.fromC(&tmp.viridian_disable);err != nil {
1159return fmt.Errorf("converting field ViridianDisable: %v", err)
1160}
1161x.Timeoffset = C.GoString(tmp.timeoffset)
1162if err := x.Hpet.fromC(&tmp.hpet);err != nil {
1163return fmt.Errorf("converting field Hpet: %v", err)
1164}
1165if err := x.VptAlign.fromC(&tmp.vpt_align);err != nil {
1166return fmt.Errorf("converting field VptAlign: %v", err)
1167}
1168x.MmioHoleMemkb = uint64(tmp.mmio_hole_memkb)
1169x.TimerMode = TimerMode(tmp.timer_mode)
1170if err := x.NestedHvm.fromC(&tmp.nested_hvm);err != nil {
1171return fmt.Errorf("converting field NestedHvm: %v", err)
1172}
1173if err := x.Altp2M.fromC(&tmp.altp2m);err != nil {
1174return fmt.Errorf("converting field Altp2M: %v", err)
1175}
1176x.SystemFirmware = C.GoString(tmp.system_firmware)
1177x.SmbiosFirmware = C.GoString(tmp.smbios_firmware)
1178x.AcpiFirmware = C.GoString(tmp.acpi_firmware)
1179x.Hdtype = Hdtype(tmp.hdtype)
1180if err := x.Nographic.fromC(&tmp.nographic);err != nil {
1181return fmt.Errorf("converting field Nographic: %v", err)
1182}
1183if err := x.Vga.fromC(&tmp.vga);err != nil {
1184return fmt.Errorf("converting field Vga: %v", err)
1185}
1186if err := x.Vnc.fromC(&tmp.vnc);err != nil {
1187return fmt.Errorf("converting field Vnc: %v", err)
1188}
1189x.Keymap = C.GoString(tmp.keymap)
1190if err := x.Sdl.fromC(&tmp.sdl);err != nil {
1191return fmt.Errorf("converting field Sdl: %v", err)
1192}
1193if err := x.Spice.fromC(&tmp.spice);err != nil {
1194return fmt.Errorf("converting field Spice: %v", err)
1195}
1196if err := x.GfxPassthru.fromC(&tmp.gfx_passthru);err != nil {
1197return fmt.Errorf("converting field GfxPassthru: %v", err)
1198}
1199x.GfxPassthruKind = GfxPassthruKind(tmp.gfx_passthru_kind)
1200x.Serial = C.GoString(tmp.serial)
1201x.Boot = C.GoString(tmp.boot)
1202if err := x.Usb.fromC(&tmp.usb);err != nil {
1203return fmt.Errorf("converting field Usb: %v", err)
1204}
1205x.Usbversion = int(tmp.usbversion)
1206x.Usbdevice = C.GoString(tmp.usbdevice)
1207if err := x.VkbDevice.fromC(&tmp.vkb_device);err != nil {
1208return fmt.Errorf("converting field VkbDevice: %v", err)
1209}
1210x.Soundhw = C.GoString(tmp.soundhw)
1211if err := x.XenPlatformPci.fromC(&tmp.xen_platform_pci);err != nil {
1212return fmt.Errorf("converting field XenPlatformPci: %v", err)
1213}
1214if err := x.UsbdeviceList.fromC(&tmp.usbdevice_list);err != nil {
1215return fmt.Errorf("converting field UsbdeviceList: %v", err)
1216}
1217x.VendorDevice = VendorDevice(tmp.vendor_device)
1218if err := x.MsVmGenid.fromC(&tmp.ms_vm_genid);err != nil {
1219return fmt.Errorf("converting field MsVmGenid: %v", err)
1220}
1221if err := x.SerialList.fromC(&tmp.serial_list);err != nil {
1222return fmt.Errorf("converting field SerialList: %v", err)
1223}
1224if err := x.Rdm.fromC(&tmp.rdm);err != nil {
1225return fmt.Errorf("converting field Rdm: %v", err)
1226}
1227x.RdmMemBoundaryMemkb = uint64(tmp.rdm_mem_boundary_memkb)
1228x.McaCaps = uint64(tmp.mca_caps)
1229return nil
1230}
1231
1232func (x *DomainBuildInfoTypeUnionPv) fromC(xc *C.libxl_domain_build_info) error {
1233if DomainType(xc._type) != DomainTypePv {
1234return errors.New("expected union key DomainTypePv")
1235}
1236
1237tmp := (*C.libxl_domain_build_info_type_union_pv)(unsafe.Pointer(&xc.u[0]))
1238x.Kernel = C.GoString(tmp.kernel)
1239x.SlackMemkb = uint64(tmp.slack_memkb)
1240x.Bootloader = C.GoString(tmp.bootloader)
1241if err := x.BootloaderArgs.fromC(&tmp.bootloader_args);err != nil {
1242return fmt.Errorf("converting field BootloaderArgs: %v", err)
1243}
1244x.Cmdline = C.GoString(tmp.cmdline)
1245x.Ramdisk = C.GoString(tmp.ramdisk)
1246x.Features = C.GoString(tmp.features)
1247if err := x.E820Host.fromC(&tmp.e820_host);err != nil {
1248return fmt.Errorf("converting field E820Host: %v", err)
1249}
1250return nil
1251}
1252
1253func (x *DomainBuildInfoTypeUnionPvh) fromC(xc *C.libxl_domain_build_info) error {
1254if DomainType(xc._type) != DomainTypePvh {
1255return errors.New("expected union key DomainTypePvh")
1256}
1257
1258tmp := (*C.libxl_domain_build_info_type_union_pvh)(unsafe.Pointer(&xc.u[0]))
1259if err := x.Pvshim.fromC(&tmp.pvshim);err != nil {
1260return fmt.Errorf("converting field Pvshim: %v", err)
1261}
1262x.PvshimPath = C.GoString(tmp.pvshim_path)
1263x.PvshimCmdline = C.GoString(tmp.pvshim_cmdline)
1264x.PvshimExtra = C.GoString(tmp.pvshim_extra)
1265return nil
1266}
1267
1268func (x *DomainBuildInfo) toC(xc *C.libxl_domain_build_info) (err error){defer func(){
1269if err != nil{
1270C.libxl_domain_build_info_dispose(xc)}
1271}()
1272
1273xc.max_vcpus = C.int(x.MaxVcpus)
1274if err := x.AvailVcpus.toC(&xc.avail_vcpus); err != nil {
1275return fmt.Errorf("converting field AvailVcpus: %v", err)
1276}
1277if err := x.Cpumap.toC(&xc.cpumap); err != nil {
1278return fmt.Errorf("converting field Cpumap: %v", err)
1279}
1280if err := x.Nodemap.toC(&xc.nodemap); err != nil {
1281return fmt.Errorf("converting field Nodemap: %v", err)
1282}
1283if numVcpuHardAffinity := len(x.VcpuHardAffinity); numVcpuHardAffinity > 0 {
1284xc.vcpu_hard_affinity = (*C.libxl_bitmap)(C.malloc(C.ulong(numVcpuHardAffinity)*C.sizeof_libxl_bitmap))
1285xc.num_vcpu_hard_affinity = C.int(numVcpuHardAffinity)
1286cVcpuHardAffinity := (*[1<<28]C.libxl_bitmap)(unsafe.Pointer(xc.vcpu_hard_affinity))[:numVcpuHardAffinity:numVcpuHardAffinity]
1287for i,v := range x.VcpuHardAffinity {
1288if err := v.toC(&cVcpuHardAffinity[i]); err != nil {
1289return fmt.Errorf("converting field VcpuHardAffinity: %v", err)
1290}
1291}
1292}
1293if numVcpuSoftAffinity := len(x.VcpuSoftAffinity); numVcpuSoftAffinity > 0 {
1294xc.vcpu_soft_affinity = (*C.libxl_bitmap)(C.malloc(C.ulong(numVcpuSoftAffinity)*C.sizeof_libxl_bitmap))
1295xc.num_vcpu_soft_affinity = C.int(numVcpuSoftAffinity)
1296cVcpuSoftAffinity := (*[1<<28]C.libxl_bitmap)(unsafe.Pointer(xc.vcpu_soft_affinity))[:numVcpuSoftAffinity:numVcpuSoftAffinity]
1297for i,v := range x.VcpuSoftAffinity {
1298if err := v.toC(&cVcpuSoftAffinity[i]); err != nil {
1299return fmt.Errorf("converting field VcpuSoftAffinity: %v", err)
1300}
1301}
1302}
1303if err := x.NumaPlacement.toC(&xc.numa_placement); err != nil {
1304return fmt.Errorf("converting field NumaPlacement: %v", err)
1305}
1306xc.tsc_mode = C.libxl_tsc_mode(x.TscMode)
1307xc.max_memkb = C.uint64_t(x.MaxMemkb)
1308xc.target_memkb = C.uint64_t(x.TargetMemkb)
1309xc.video_memkb = C.uint64_t(x.VideoMemkb)
1310xc.shadow_memkb = C.uint64_t(x.ShadowMemkb)
1311xc.iommu_memkb = C.uint64_t(x.IommuMemkb)
1312xc.rtc_timeoffset = C.uint32_t(x.RtcTimeoffset)
1313xc.exec_ssidref = C.uint32_t(x.ExecSsidref)
1314if x.ExecSsidLabel != "" {
1315xc.exec_ssid_label = C.CString(x.ExecSsidLabel)}
1316if err := x.Localtime.toC(&xc.localtime); err != nil {
1317return fmt.Errorf("converting field Localtime: %v", err)
1318}
1319if err := x.DisableMigrate.toC(&xc.disable_migrate); err != nil {
1320return fmt.Errorf("converting field DisableMigrate: %v", err)
1321}
1322if err := x.Cpuid.toC(&xc.cpuid); err != nil {
1323return fmt.Errorf("converting field Cpuid: %v", err)
1324}
1325if x.BlkdevStart != "" {
1326xc.blkdev_start = C.CString(x.BlkdevStart)}
1327if numVnumaNodes := len(x.VnumaNodes); numVnumaNodes > 0 {
1328xc.vnuma_nodes = (*C.libxl_vnode_info)(C.malloc(C.ulong(numVnumaNodes)*C.sizeof_libxl_vnode_info))
1329xc.num_vnuma_nodes = C.int(numVnumaNodes)
1330cVnumaNodes := (*[1<<28]C.libxl_vnode_info)(unsafe.Pointer(xc.vnuma_nodes))[:numVnumaNodes:numVnumaNodes]
1331for i,v := range x.VnumaNodes {
1332if err := v.toC(&cVnumaNodes[i]); err != nil {
1333return fmt.Errorf("converting field VnumaNodes: %v", err)
1334}
1335}
1336}
1337xc.max_grant_frames = C.uint32_t(x.MaxGrantFrames)
1338xc.max_maptrack_frames = C.uint32_t(x.MaxMaptrackFrames)
1339xc.device_model_version = C.libxl_device_model_version(x.DeviceModelVersion)
1340if err := x.DeviceModelStubdomain.toC(&xc.device_model_stubdomain); err != nil {
1341return fmt.Errorf("converting field DeviceModelStubdomain: %v", err)
1342}
1343xc.stubdomain_memkb = C.uint64_t(x.StubdomainMemkb)
1344if x.StubdomainKernel != "" {
1345xc.stubdomain_kernel = C.CString(x.StubdomainKernel)}
1346if x.StubdomainRamdisk != "" {
1347xc.stubdomain_ramdisk = C.CString(x.StubdomainRamdisk)}
1348if x.DeviceModel != "" {
1349xc.device_model = C.CString(x.DeviceModel)}
1350xc.device_model_ssidref = C.uint32_t(x.DeviceModelSsidref)
1351if x.DeviceModelSsidLabel != "" {
1352xc.device_model_ssid_label = C.CString(x.DeviceModelSsidLabel)}
1353if x.DeviceModelUser != "" {
1354xc.device_model_user = C.CString(x.DeviceModelUser)}
1355if err := x.Extra.toC(&xc.extra); err != nil {
1356return fmt.Errorf("converting field Extra: %v", err)
1357}
1358if err := x.ExtraPv.toC(&xc.extra_pv); err != nil {
1359return fmt.Errorf("converting field ExtraPv: %v", err)
1360}
1361if err := x.ExtraHvm.toC(&xc.extra_hvm); err != nil {
1362return fmt.Errorf("converting field ExtraHvm: %v", err)
1363}
1364if err := x.SchedParams.toC(&xc.sched_params); err != nil {
1365return fmt.Errorf("converting field SchedParams: %v", err)
1366}
1367if numIoports := len(x.Ioports); numIoports > 0 {
1368xc.ioports = (*C.libxl_ioport_range)(C.malloc(C.ulong(numIoports)*C.sizeof_libxl_ioport_range))
1369xc.num_ioports = C.int(numIoports)
1370cIoports := (*[1<<28]C.libxl_ioport_range)(unsafe.Pointer(xc.ioports))[:numIoports:numIoports]
1371for i,v := range x.Ioports {
1372if err := v.toC(&cIoports[i]); err != nil {
1373return fmt.Errorf("converting field Ioports: %v", err)
1374}
1375}
1376}
1377if numIrqs := len(x.Irqs); numIrqs > 0 {
1378xc.irqs = (*C.uint32_t)(C.malloc(C.size_t(numIrqs*numIrqs)))
1379xc.num_irqs = C.int(numIrqs)
1380cIrqs := (*[1<<28]C.uint32_t)(unsafe.Pointer(xc.irqs))[:numIrqs:numIrqs]
1381for i,v := range x.Irqs {
1382cIrqs[i] = C.uint32_t(v)
1383}
1384}
1385if numIomem := len(x.Iomem); numIomem > 0 {
1386xc.iomem = (*C.libxl_iomem_range)(C.malloc(C.ulong(numIomem)*C.sizeof_libxl_iomem_range))
1387xc.num_iomem = C.int(numIomem)
1388cIomem := (*[1<<28]C.libxl_iomem_range)(unsafe.Pointer(xc.iomem))[:numIomem:numIomem]
1389for i,v := range x.Iomem {
1390if err := v.toC(&cIomem[i]); err != nil {
1391return fmt.Errorf("converting field Iomem: %v", err)
1392}
1393}
1394}
1395if err := x.ClaimMode.toC(&xc.claim_mode); err != nil {
1396return fmt.Errorf("converting field ClaimMode: %v", err)
1397}
1398xc.event_channels = C.uint32_t(x.EventChannels)
1399if x.Kernel != "" {
1400xc.kernel = C.CString(x.Kernel)}
1401if x.Cmdline != "" {
1402xc.cmdline = C.CString(x.Cmdline)}
1403if x.Ramdisk != "" {
1404xc.ramdisk = C.CString(x.Ramdisk)}
1405if x.DeviceTree != "" {
1406xc.device_tree = C.CString(x.DeviceTree)}
1407if err := x.Acpi.toC(&xc.acpi); err != nil {
1408return fmt.Errorf("converting field Acpi: %v", err)
1409}
1410if x.Bootloader != "" {
1411xc.bootloader = C.CString(x.Bootloader)}
1412if err := x.BootloaderArgs.toC(&xc.bootloader_args); err != nil {
1413return fmt.Errorf("converting field BootloaderArgs: %v", err)
1414}
1415xc.timer_mode = C.libxl_timer_mode(x.TimerMode)
1416if err := x.NestedHvm.toC(&xc.nested_hvm); err != nil {
1417return fmt.Errorf("converting field NestedHvm: %v", err)
1418}
1419if err := x.Apic.toC(&xc.apic); err != nil {
1420return fmt.Errorf("converting field Apic: %v", err)
1421}
1422if err := x.DmRestrict.toC(&xc.dm_restrict); err != nil {
1423return fmt.Errorf("converting field DmRestrict: %v", err)
1424}
1425xc.tee = C.libxl_tee_type(x.Tee)
1426xc._type = C.libxl_domain_type(x.Type)
1427switch x.Type{
1428case DomainTypeHvm:
1429tmp, ok := x.TypeUnion.(DomainBuildInfoTypeUnionHvm)
1430if !ok {
1431return errors.New("wrong type for union key type")
1432}
1433var hvm C.libxl_domain_build_info_type_union_hvm
1434if tmp.Firmware != "" {
1435hvm.firmware = C.CString(tmp.Firmware)}
1436hvm.bios = C.libxl_bios_type(tmp.Bios)
1437if err := tmp.Pae.toC(&hvm.pae); err != nil {
1438return fmt.Errorf("converting field Pae: %v", err)
1439}
1440if err := tmp.Apic.toC(&hvm.apic); err != nil {
1441return fmt.Errorf("converting field Apic: %v", err)
1442}
1443if err := tmp.Acpi.toC(&hvm.acpi); err != nil {
1444return fmt.Errorf("converting field Acpi: %v", err)
1445}
1446if err := tmp.AcpiS3.toC(&hvm.acpi_s3); err != nil {
1447return fmt.Errorf("converting field AcpiS3: %v", err)
1448}
1449if err := tmp.AcpiS4.toC(&hvm.acpi_s4); err != nil {
1450return fmt.Errorf("converting field AcpiS4: %v", err)
1451}
1452if err := tmp.AcpiLaptopSlate.toC(&hvm.acpi_laptop_slate); err != nil {
1453return fmt.Errorf("converting field AcpiLaptopSlate: %v", err)
1454}
1455if err := tmp.Nx.toC(&hvm.nx); err != nil {
1456return fmt.Errorf("converting field Nx: %v", err)
1457}
1458if err := tmp.Viridian.toC(&hvm.viridian); err != nil {
1459return fmt.Errorf("converting field Viridian: %v", err)
1460}
1461if err := tmp.ViridianEnable.toC(&hvm.viridian_enable); err != nil {
1462return fmt.Errorf("converting field ViridianEnable: %v", err)
1463}
1464if err := tmp.ViridianDisable.toC(&hvm.viridian_disable); err != nil {
1465return fmt.Errorf("converting field ViridianDisable: %v", err)
1466}
1467if tmp.Timeoffset != "" {
1468hvm.timeoffset = C.CString(tmp.Timeoffset)}
1469if err := tmp.Hpet.toC(&hvm.hpet); err != nil {
1470return fmt.Errorf("converting field Hpet: %v", err)
1471}
1472if err := tmp.VptAlign.toC(&hvm.vpt_align); err != nil {
1473return fmt.Errorf("converting field VptAlign: %v", err)
1474}
1475hvm.mmio_hole_memkb = C.uint64_t(tmp.MmioHoleMemkb)
1476hvm.timer_mode = C.libxl_timer_mode(tmp.TimerMode)
1477if err := tmp.NestedHvm.toC(&hvm.nested_hvm); err != nil {
1478return fmt.Errorf("converting field NestedHvm: %v", err)
1479}
1480if err := tmp.Altp2M.toC(&hvm.altp2m); err != nil {
1481return fmt.Errorf("converting field Altp2M: %v", err)
1482}
1483if tmp.SystemFirmware != "" {
1484hvm.system_firmware = C.CString(tmp.SystemFirmware)}
1485if tmp.SmbiosFirmware != "" {
1486hvm.smbios_firmware = C.CString(tmp.SmbiosFirmware)}
1487if tmp.AcpiFirmware != "" {
1488hvm.acpi_firmware = C.CString(tmp.AcpiFirmware)}
1489hvm.hdtype = C.libxl_hdtype(tmp.Hdtype)
1490if err := tmp.Nographic.toC(&hvm.nographic); err != nil {
1491return fmt.Errorf("converting field Nographic: %v", err)
1492}
1493if err := tmp.Vga.toC(&hvm.vga); err != nil {
1494return fmt.Errorf("converting field Vga: %v", err)
1495}
1496if err := tmp.Vnc.toC(&hvm.vnc); err != nil {
1497return fmt.Errorf("converting field Vnc: %v", err)
1498}
1499if tmp.Keymap != "" {
1500hvm.keymap = C.CString(tmp.Keymap)}
1501if err := tmp.Sdl.toC(&hvm.sdl); err != nil {
1502return fmt.Errorf("converting field Sdl: %v", err)
1503}
1504if err := tmp.Spice.toC(&hvm.spice); err != nil {
1505return fmt.Errorf("converting field Spice: %v", err)
1506}
1507if err := tmp.GfxPassthru.toC(&hvm.gfx_passthru); err != nil {
1508return fmt.Errorf("converting field GfxPassthru: %v", err)
1509}
1510hvm.gfx_passthru_kind = C.libxl_gfx_passthru_kind(tmp.GfxPassthruKind)
1511if tmp.Serial != "" {
1512hvm.serial = C.CString(tmp.Serial)}
1513if tmp.Boot != "" {
1514hvm.boot = C.CString(tmp.Boot)}
1515if err := tmp.Usb.toC(&hvm.usb); err != nil {
1516return fmt.Errorf("converting field Usb: %v", err)
1517}
1518hvm.usbversion = C.int(tmp.Usbversion)
1519if tmp.Usbdevice != "" {
1520hvm.usbdevice = C.CString(tmp.Usbdevice)}
1521if err := tmp.VkbDevice.toC(&hvm.vkb_device); err != nil {
1522return fmt.Errorf("converting field VkbDevice: %v", err)
1523}
1524if tmp.Soundhw != "" {
1525hvm.soundhw = C.CString(tmp.Soundhw)}
1526if err := tmp.XenPlatformPci.toC(&hvm.xen_platform_pci); err != nil {
1527return fmt.Errorf("converting field XenPlatformPci: %v", err)
1528}
1529if err := tmp.UsbdeviceList.toC(&hvm.usbdevice_list); err != nil {
1530return fmt.Errorf("converting field UsbdeviceList: %v", err)
1531}
1532hvm.vendor_device = C.libxl_vendor_device(tmp.VendorDevice)
1533if err := tmp.MsVmGenid.toC(&hvm.ms_vm_genid); err != nil {
1534return fmt.Errorf("converting field MsVmGenid: %v", err)
1535}
1536if err := tmp.SerialList.toC(&hvm.serial_list); err != nil {
1537return fmt.Errorf("converting field SerialList: %v", err)
1538}
1539if err := tmp.Rdm.toC(&hvm.rdm); err != nil {
1540return fmt.Errorf("converting field Rdm: %v", err)
1541}
1542hvm.rdm_mem_boundary_memkb = C.uint64_t(tmp.RdmMemBoundaryMemkb)
1543hvm.mca_caps = C.uint64_t(tmp.McaCaps)
1544hvmBytes := C.GoBytes(unsafe.Pointer(&hvm),C.sizeof_libxl_domain_build_info_type_union_hvm)
1545copy(xc.u[:],hvmBytes)
1546case DomainTypePv:
1547tmp, ok := x.TypeUnion.(DomainBuildInfoTypeUnionPv)
1548if !ok {
1549return errors.New("wrong type for union key type")
1550}
1551var pv C.libxl_domain_build_info_type_union_pv
1552if tmp.Kernel != "" {
1553pv.kernel = C.CString(tmp.Kernel)}
1554pv.slack_memkb = C.uint64_t(tmp.SlackMemkb)
1555if tmp.Bootloader != "" {
1556pv.bootloader = C.CString(tmp.Bootloader)}
1557if err := tmp.BootloaderArgs.toC(&pv.bootloader_args); err != nil {
1558return fmt.Errorf("converting field BootloaderArgs: %v", err)
1559}
1560if tmp.Cmdline != "" {
1561pv.cmdline = C.CString(tmp.Cmdline)}
1562if tmp.Ramdisk != "" {
1563pv.ramdisk = C.CString(tmp.Ramdisk)}
1564if tmp.Features != "" {
1565pv.features = C.CString(tmp.Features)}
1566if err := tmp.E820Host.toC(&pv.e820_host); err != nil {
1567return fmt.Errorf("converting field E820Host: %v", err)
1568}
1569pvBytes := C.GoBytes(unsafe.Pointer(&pv),C.sizeof_libxl_domain_build_info_type_union_pv)
1570copy(xc.u[:],pvBytes)
1571case DomainTypePvh:
1572tmp, ok := x.TypeUnion.(DomainBuildInfoTypeUnionPvh)
1573if !ok {
1574return errors.New("wrong type for union key type")
1575}
1576var pvh C.libxl_domain_build_info_type_union_pvh
1577if err := tmp.Pvshim.toC(&pvh.pvshim); err != nil {
1578return fmt.Errorf("converting field Pvshim: %v", err)
1579}
1580if tmp.PvshimPath != "" {
1581pvh.pvshim_path = C.CString(tmp.PvshimPath)}
1582if tmp.PvshimCmdline != "" {
1583pvh.pvshim_cmdline = C.CString(tmp.PvshimCmdline)}
1584if tmp.PvshimExtra != "" {
1585pvh.pvshim_extra = C.CString(tmp.PvshimExtra)}
1586pvhBytes := C.GoBytes(unsafe.Pointer(&pvh),C.sizeof_libxl_domain_build_info_type_union_pvh)
1587copy(xc.u[:],pvhBytes)
1588case DomainTypeInvalid:
1589break
1590default:
1591return fmt.Errorf("invalid union key '%v'", x.Type)}
1592xc.arch_arm.gic_version = C.libxl_gic_version(x.ArchArm.GicVersion)
1593xc.arch_arm.vuart = C.libxl_vuart_type(x.ArchArm.Vuart)
1594xc.altp2m = C.libxl_altp2m_mode(x.Altp2M)
1595
1596 return nil
1597 }
1598
1599// NewDeviceVfb returns an instance of DeviceVfb initialized with defaults.
1600func NewDeviceVfb() (*DeviceVfb, error) {
1601var (
1602x DeviceVfb
1603xc C.libxl_device_vfb)
1604
1605C.libxl_device_vfb_init(&xc)
1606defer C.libxl_device_vfb_dispose(&xc)
1607
1608if err := x.fromC(&xc); err != nil {
1609return nil, err }
1610
1611return &x, nil}
1612
1613func (x *DeviceVfb) fromC(xc *C.libxl_device_vfb) error {
1614 x.BackendDomid = Domid(xc.backend_domid)
1615x.BackendDomname = C.GoString(xc.backend_domname)
1616x.Devid = Devid(xc.devid)
1617if err := x.Vnc.fromC(&xc.vnc);err != nil {
1618return fmt.Errorf("converting field Vnc: %v", err)
1619}
1620if err := x.Sdl.fromC(&xc.sdl);err != nil {
1621return fmt.Errorf("converting field Sdl: %v", err)
1622}
1623x.Keymap = C.GoString(xc.keymap)
1624
1625 return nil}
1626
1627func (x *DeviceVfb) toC(xc *C.libxl_device_vfb) (err error){defer func(){
1628if err != nil{
1629C.libxl_device_vfb_dispose(xc)}
1630}()
1631
1632xc.backend_domid = C.libxl_domid(x.BackendDomid)
1633if x.BackendDomname != "" {
1634xc.backend_domname = C.CString(x.BackendDomname)}
1635xc.devid = C.libxl_devid(x.Devid)
1636if err := x.Vnc.toC(&xc.vnc); err != nil {
1637return fmt.Errorf("converting field Vnc: %v", err)
1638}
1639if err := x.Sdl.toC(&xc.sdl); err != nil {
1640return fmt.Errorf("converting field Sdl: %v", err)
1641}
1642if x.Keymap != "" {
1643xc.keymap = C.CString(x.Keymap)}
1644
1645 return nil
1646 }
1647
1648// NewDeviceVkb returns an instance of DeviceVkb initialized with defaults.
1649func NewDeviceVkb() (*DeviceVkb, error) {
1650var (
1651x DeviceVkb
1652xc C.libxl_device_vkb)
1653
1654C.libxl_device_vkb_init(&xc)
1655defer C.libxl_device_vkb_dispose(&xc)
1656
1657if err := x.fromC(&xc); err != nil {
1658return nil, err }
1659
1660return &x, nil}
1661
1662func (x *DeviceVkb) fromC(xc *C.libxl_device_vkb) error {
1663 x.BackendDomid = Domid(xc.backend_domid)
1664x.BackendDomname = C.GoString(xc.backend_domname)
1665x.Devid = Devid(xc.devid)
1666x.BackendType = VkbBackend(xc.backend_type)
1667x.UniqueId = C.GoString(xc.unique_id)
1668x.FeatureDisableKeyboard = bool(xc.feature_disable_keyboard)
1669x.FeatureDisablePointer = bool(xc.feature_disable_pointer)
1670x.FeatureAbsPointer = bool(xc.feature_abs_pointer)
1671x.FeatureRawPointer = bool(xc.feature_raw_pointer)
1672x.FeatureMultiTouch = bool(xc.feature_multi_touch)
1673x.Width = uint32(xc.width)
1674x.Height = uint32(xc.height)
1675x.MultiTouchWidth = uint32(xc.multi_touch_width)
1676x.MultiTouchHeight = uint32(xc.multi_touch_height)
1677x.MultiTouchNumContacts = uint32(xc.multi_touch_num_contacts)
1678
1679 return nil}
1680
1681func (x *DeviceVkb) toC(xc *C.libxl_device_vkb) (err error){defer func(){
1682if err != nil{
1683C.libxl_device_vkb_dispose(xc)}
1684}()
1685
1686xc.backend_domid = C.libxl_domid(x.BackendDomid)
1687if x.BackendDomname != "" {
1688xc.backend_domname = C.CString(x.BackendDomname)}
1689xc.devid = C.libxl_devid(x.Devid)
1690xc.backend_type = C.libxl_vkb_backend(x.BackendType)
1691if x.UniqueId != "" {
1692xc.unique_id = C.CString(x.UniqueId)}
1693xc.feature_disable_keyboard = C.bool(x.FeatureDisableKeyboard)
1694xc.feature_disable_pointer = C.bool(x.FeatureDisablePointer)
1695xc.feature_abs_pointer = C.bool(x.FeatureAbsPointer)
1696xc.feature_raw_pointer = C.bool(x.FeatureRawPointer)
1697xc.feature_multi_touch = C.bool(x.FeatureMultiTouch)
1698xc.width = C.uint32_t(x.Width)
1699xc.height = C.uint32_t(x.Height)
1700xc.multi_touch_width = C.uint32_t(x.MultiTouchWidth)
1701xc.multi_touch_height = C.uint32_t(x.MultiTouchHeight)
1702xc.multi_touch_num_contacts = C.uint32_t(x.MultiTouchNumContacts)
1703
1704 return nil
1705 }
1706
1707// NewDeviceDisk returns an instance of DeviceDisk initialized with defaults.
1708func NewDeviceDisk() (*DeviceDisk, error) {
1709var (
1710x DeviceDisk
1711xc C.libxl_device_disk)
1712
1713C.libxl_device_disk_init(&xc)
1714defer C.libxl_device_disk_dispose(&xc)
1715
1716if err := x.fromC(&xc); err != nil {
1717return nil, err }
1718
1719return &x, nil}
1720
1721func (x *DeviceDisk) fromC(xc *C.libxl_device_disk) error {
1722 x.BackendDomid = Domid(xc.backend_domid)
1723x.BackendDomname = C.GoString(xc.backend_domname)
1724x.PdevPath = C.GoString(xc.pdev_path)
1725x.Vdev = C.GoString(xc.vdev)
1726x.Backend = DiskBackend(xc.backend)
1727x.Format = DiskFormat(xc.format)
1728x.Script = C.GoString(xc.script)
1729x.Removable = int(xc.removable)
1730x.Readwrite = int(xc.readwrite)
1731x.IsCdrom = int(xc.is_cdrom)
1732x.DirectIoSafe = bool(xc.direct_io_safe)
1733if err := x.DiscardEnable.fromC(&xc.discard_enable);err != nil {
1734return fmt.Errorf("converting field DiscardEnable: %v", err)
1735}
1736if err := x.ColoEnable.fromC(&xc.colo_enable);err != nil {
1737return fmt.Errorf("converting field ColoEnable: %v", err)
1738}
1739if err := x.ColoRestoreEnable.fromC(&xc.colo_restore_enable);err != nil {
1740return fmt.Errorf("converting field ColoRestoreEnable: %v", err)
1741}
1742x.ColoHost = C.GoString(xc.colo_host)
1743x.ColoPort = int(xc.colo_port)
1744x.ColoExport = C.GoString(xc.colo_export)
1745x.ActiveDisk = C.GoString(xc.active_disk)
1746x.HiddenDisk = C.GoString(xc.hidden_disk)
1747
1748 return nil}
1749
1750func (x *DeviceDisk) toC(xc *C.libxl_device_disk) (err error){defer func(){
1751if err != nil{
1752C.libxl_device_disk_dispose(xc)}
1753}()
1754
1755xc.backend_domid = C.libxl_domid(x.BackendDomid)
1756if x.BackendDomname != "" {
1757xc.backend_domname = C.CString(x.BackendDomname)}
1758if x.PdevPath != "" {
1759xc.pdev_path = C.CString(x.PdevPath)}
1760if x.Vdev != "" {
1761xc.vdev = C.CString(x.Vdev)}
1762xc.backend = C.libxl_disk_backend(x.Backend)
1763xc.format = C.libxl_disk_format(x.Format)
1764if x.Script != "" {
1765xc.script = C.CString(x.Script)}
1766xc.removable = C.int(x.Removable)
1767xc.readwrite = C.int(x.Readwrite)
1768xc.is_cdrom = C.int(x.IsCdrom)
1769xc.direct_io_safe = C.bool(x.DirectIoSafe)
1770if err := x.DiscardEnable.toC(&xc.discard_enable); err != nil {
1771return fmt.Errorf("converting field DiscardEnable: %v", err)
1772}
1773if err := x.ColoEnable.toC(&xc.colo_enable); err != nil {
1774return fmt.Errorf("converting field ColoEnable: %v", err)
1775}
1776if err := x.ColoRestoreEnable.toC(&xc.colo_restore_enable); err != nil {
1777return fmt.Errorf("converting field ColoRestoreEnable: %v", err)
1778}
1779if x.ColoHost != "" {
1780xc.colo_host = C.CString(x.ColoHost)}
1781xc.colo_port = C.int(x.ColoPort)
1782if x.ColoExport != "" {
1783xc.colo_export = C.CString(x.ColoExport)}
1784if x.ActiveDisk != "" {
1785xc.active_disk = C.CString(x.ActiveDisk)}
1786if x.HiddenDisk != "" {
1787xc.hidden_disk = C.CString(x.HiddenDisk)}
1788
1789 return nil
1790 }
1791
1792// NewDeviceNic returns an instance of DeviceNic initialized with defaults.
1793func NewDeviceNic() (*DeviceNic, error) {
1794var (
1795x DeviceNic
1796xc C.libxl_device_nic)
1797
1798C.libxl_device_nic_init(&xc)
1799defer C.libxl_device_nic_dispose(&xc)
1800
1801if err := x.fromC(&xc); err != nil {
1802return nil, err }
1803
1804return &x, nil}
1805
1806func (x *DeviceNic) fromC(xc *C.libxl_device_nic) error {
1807 x.BackendDomid = Domid(xc.backend_domid)
1808x.BackendDomname = C.GoString(xc.backend_domname)
1809x.Devid = Devid(xc.devid)
1810x.Mtu = int(xc.mtu)
1811x.Model = C.GoString(xc.model)
1812if err := x.Mac.fromC(&xc.mac);err != nil {
1813return fmt.Errorf("converting field Mac: %v", err)
1814}
1815x.Ip = C.GoString(xc.ip)
1816x.Bridge = C.GoString(xc.bridge)
1817x.Ifname = C.GoString(xc.ifname)
1818x.Script = C.GoString(xc.script)
1819x.Nictype = NicType(xc.nictype)
1820x.RateBytesPerInterval = uint64(xc.rate_bytes_per_interval)
1821x.RateIntervalUsecs = uint32(xc.rate_interval_usecs)
1822x.Gatewaydev = C.GoString(xc.gatewaydev)
1823x.ColoftForwarddev = C.GoString(xc.coloft_forwarddev)
1824x.ColoSockMirrorId = C.GoString(xc.colo_sock_mirror_id)
1825x.ColoSockMirrorIp = C.GoString(xc.colo_sock_mirror_ip)
1826x.ColoSockMirrorPort = C.GoString(xc.colo_sock_mirror_port)
1827x.ColoSockComparePriInId = C.GoString(xc.colo_sock_compare_pri_in_id)
1828x.ColoSockComparePriInIp = C.GoString(xc.colo_sock_compare_pri_in_ip)
1829x.ColoSockComparePriInPort = C.GoString(xc.colo_sock_compare_pri_in_port)
1830x.ColoSockCompareSecInId = C.GoString(xc.colo_sock_compare_sec_in_id)
1831x.ColoSockCompareSecInIp = C.GoString(xc.colo_sock_compare_sec_in_ip)
1832x.ColoSockCompareSecInPort = C.GoString(xc.colo_sock_compare_sec_in_port)
1833x.ColoSockCompareNotifyId = C.GoString(xc.colo_sock_compare_notify_id)
1834x.ColoSockCompareNotifyIp = C.GoString(xc.colo_sock_compare_notify_ip)
1835x.ColoSockCompareNotifyPort = C.GoString(xc.colo_sock_compare_notify_port)
1836x.ColoSockRedirector0Id = C.GoString(xc.colo_sock_redirector0_id)
1837x.ColoSockRedirector0Ip = C.GoString(xc.colo_sock_redirector0_ip)
1838x.ColoSockRedirector0Port = C.GoString(xc.colo_sock_redirector0_port)
1839x.ColoSockRedirector1Id = C.GoString(xc.colo_sock_redirector1_id)
1840x.ColoSockRedirector1Ip = C.GoString(xc.colo_sock_redirector1_ip)
1841x.ColoSockRedirector1Port = C.GoString(xc.colo_sock_redirector1_port)
1842x.ColoSockRedirector2Id = C.GoString(xc.colo_sock_redirector2_id)
1843x.ColoSockRedirector2Ip = C.GoString(xc.colo_sock_redirector2_ip)
1844x.ColoSockRedirector2Port = C.GoString(xc.colo_sock_redirector2_port)
1845x.ColoFilterMirrorQueue = C.GoString(xc.colo_filter_mirror_queue)
1846x.ColoFilterMirrorOutdev = C.GoString(xc.colo_filter_mirror_outdev)
1847x.ColoFilterRedirector0Queue = C.GoString(xc.colo_filter_redirector0_queue)
1848x.ColoFilterRedirector0Indev = C.GoString(xc.colo_filter_redirector0_indev)
1849x.ColoFilterRedirector0Outdev = C.GoString(xc.colo_filter_redirector0_outdev)
1850x.ColoFilterRedirector1Queue = C.GoString(xc.colo_filter_redirector1_queue)
1851x.ColoFilterRedirector1Indev = C.GoString(xc.colo_filter_redirector1_indev)
1852x.ColoFilterRedirector1Outdev = C.GoString(xc.colo_filter_redirector1_outdev)
1853x.ColoComparePriIn = C.GoString(xc.colo_compare_pri_in)
1854x.ColoCompareSecIn = C.GoString(xc.colo_compare_sec_in)
1855x.ColoCompareOut = C.GoString(xc.colo_compare_out)
1856x.ColoCompareNotifyDev = C.GoString(xc.colo_compare_notify_dev)
1857x.ColoSockSecRedirector0Id = C.GoString(xc.colo_sock_sec_redirector0_id)
1858x.ColoSockSecRedirector0Ip = C.GoString(xc.colo_sock_sec_redirector0_ip)
1859x.ColoSockSecRedirector0Port = C.GoString(xc.colo_sock_sec_redirector0_port)
1860x.ColoSockSecRedirector1Id = C.GoString(xc.colo_sock_sec_redirector1_id)
1861x.ColoSockSecRedirector1Ip = C.GoString(xc.colo_sock_sec_redirector1_ip)
1862x.ColoSockSecRedirector1Port = C.GoString(xc.colo_sock_sec_redirector1_port)
1863x.ColoFilterSecRedirector0Queue = C.GoString(xc.colo_filter_sec_redirector0_queue)
1864x.ColoFilterSecRedirector0Indev = C.GoString(xc.colo_filter_sec_redirector0_indev)
1865x.ColoFilterSecRedirector0Outdev = C.GoString(xc.colo_filter_sec_redirector0_outdev)
1866x.ColoFilterSecRedirector1Queue = C.GoString(xc.colo_filter_sec_redirector1_queue)
1867x.ColoFilterSecRedirector1Indev = C.GoString(xc.colo_filter_sec_redirector1_indev)
1868x.ColoFilterSecRedirector1Outdev = C.GoString(xc.colo_filter_sec_redirector1_outdev)
1869x.ColoFilterSecRewriter0Queue = C.GoString(xc.colo_filter_sec_rewriter0_queue)
1870x.ColoCheckpointHost = C.GoString(xc.colo_checkpoint_host)
1871x.ColoCheckpointPort = C.GoString(xc.colo_checkpoint_port)
1872
1873 return nil}
1874
1875func (x *DeviceNic) toC(xc *C.libxl_device_nic) (err error){defer func(){
1876if err != nil{
1877C.libxl_device_nic_dispose(xc)}
1878}()
1879
1880xc.backend_domid = C.libxl_domid(x.BackendDomid)
1881if x.BackendDomname != "" {
1882xc.backend_domname = C.CString(x.BackendDomname)}
1883xc.devid = C.libxl_devid(x.Devid)
1884xc.mtu = C.int(x.Mtu)
1885if x.Model != "" {
1886xc.model = C.CString(x.Model)}
1887if err := x.Mac.toC(&xc.mac); err != nil {
1888return fmt.Errorf("converting field Mac: %v", err)
1889}
1890if x.Ip != "" {
1891xc.ip = C.CString(x.Ip)}
1892if x.Bridge != "" {
1893xc.bridge = C.CString(x.Bridge)}
1894if x.Ifname != "" {
1895xc.ifname = C.CString(x.Ifname)}
1896if x.Script != "" {
1897xc.script = C.CString(x.Script)}
1898xc.nictype = C.libxl_nic_type(x.Nictype)
1899xc.rate_bytes_per_interval = C.uint64_t(x.RateBytesPerInterval)
1900xc.rate_interval_usecs = C.uint32_t(x.RateIntervalUsecs)
1901if x.Gatewaydev != "" {
1902xc.gatewaydev = C.CString(x.Gatewaydev)}
1903if x.ColoftForwarddev != "" {
1904xc.coloft_forwarddev = C.CString(x.ColoftForwarddev)}
1905if x.ColoSockMirrorId != "" {
1906xc.colo_sock_mirror_id = C.CString(x.ColoSockMirrorId)}
1907if x.ColoSockMirrorIp != "" {
1908xc.colo_sock_mirror_ip = C.CString(x.ColoSockMirrorIp)}
1909if x.ColoSockMirrorPort != "" {
1910xc.colo_sock_mirror_port = C.CString(x.ColoSockMirrorPort)}
1911if x.ColoSockComparePriInId != "" {
1912xc.colo_sock_compare_pri_in_id = C.CString(x.ColoSockComparePriInId)}
1913if x.ColoSockComparePriInIp != "" {
1914xc.colo_sock_compare_pri_in_ip = C.CString(x.ColoSockComparePriInIp)}
1915if x.ColoSockComparePriInPort != "" {
1916xc.colo_sock_compare_pri_in_port = C.CString(x.ColoSockComparePriInPort)}
1917if x.ColoSockCompareSecInId != "" {
1918xc.colo_sock_compare_sec_in_id = C.CString(x.ColoSockCompareSecInId)}
1919if x.ColoSockCompareSecInIp != "" {
1920xc.colo_sock_compare_sec_in_ip = C.CString(x.ColoSockCompareSecInIp)}
1921if x.ColoSockCompareSecInPort != "" {
1922xc.colo_sock_compare_sec_in_port = C.CString(x.ColoSockCompareSecInPort)}
1923if x.ColoSockCompareNotifyId != "" {
1924xc.colo_sock_compare_notify_id = C.CString(x.ColoSockCompareNotifyId)}
1925if x.ColoSockCompareNotifyIp != "" {
1926xc.colo_sock_compare_notify_ip = C.CString(x.ColoSockCompareNotifyIp)}
1927if x.ColoSockCompareNotifyPort != "" {
1928xc.colo_sock_compare_notify_port = C.CString(x.ColoSockCompareNotifyPort)}
1929if x.ColoSockRedirector0Id != "" {
1930xc.colo_sock_redirector0_id = C.CString(x.ColoSockRedirector0Id)}
1931if x.ColoSockRedirector0Ip != "" {
1932xc.colo_sock_redirector0_ip = C.CString(x.ColoSockRedirector0Ip)}
1933if x.ColoSockRedirector0Port != "" {
1934xc.colo_sock_redirector0_port = C.CString(x.ColoSockRedirector0Port)}
1935if x.ColoSockRedirector1Id != "" {
1936xc.colo_sock_redirector1_id = C.CString(x.ColoSockRedirector1Id)}
1937if x.ColoSockRedirector1Ip != "" {
1938xc.colo_sock_redirector1_ip = C.CString(x.ColoSockRedirector1Ip)}
1939if x.ColoSockRedirector1Port != "" {
1940xc.colo_sock_redirector1_port = C.CString(x.ColoSockRedirector1Port)}
1941if x.ColoSockRedirector2Id != "" {
1942xc.colo_sock_redirector2_id = C.CString(x.ColoSockRedirector2Id)}
1943if x.ColoSockRedirector2Ip != "" {
1944xc.colo_sock_redirector2_ip = C.CString(x.ColoSockRedirector2Ip)}
1945if x.ColoSockRedirector2Port != "" {
1946xc.colo_sock_redirector2_port = C.CString(x.ColoSockRedirector2Port)}
1947if x.ColoFilterMirrorQueue != "" {
1948xc.colo_filter_mirror_queue = C.CString(x.ColoFilterMirrorQueue)}
1949if x.ColoFilterMirrorOutdev != "" {
1950xc.colo_filter_mirror_outdev = C.CString(x.ColoFilterMirrorOutdev)}
1951if x.ColoFilterRedirector0Queue != "" {
1952xc.colo_filter_redirector0_queue = C.CString(x.ColoFilterRedirector0Queue)}
1953if x.ColoFilterRedirector0Indev != "" {
1954xc.colo_filter_redirector0_indev = C.CString(x.ColoFilterRedirector0Indev)}
1955if x.ColoFilterRedirector0Outdev != "" {
1956xc.colo_filter_redirector0_outdev = C.CString(x.ColoFilterRedirector0Outdev)}
1957if x.ColoFilterRedirector1Queue != "" {
1958xc.colo_filter_redirector1_queue = C.CString(x.ColoFilterRedirector1Queue)}
1959if x.ColoFilterRedirector1Indev != "" {
1960xc.colo_filter_redirector1_indev = C.CString(x.ColoFilterRedirector1Indev)}
1961if x.ColoFilterRedirector1Outdev != "" {
1962xc.colo_filter_redirector1_outdev = C.CString(x.ColoFilterRedirector1Outdev)}
1963if x.ColoComparePriIn != "" {
1964xc.colo_compare_pri_in = C.CString(x.ColoComparePriIn)}
1965if x.ColoCompareSecIn != "" {
1966xc.colo_compare_sec_in = C.CString(x.ColoCompareSecIn)}
1967if x.ColoCompareOut != "" {
1968xc.colo_compare_out = C.CString(x.ColoCompareOut)}
1969if x.ColoCompareNotifyDev != "" {
1970xc.colo_compare_notify_dev = C.CString(x.ColoCompareNotifyDev)}
1971if x.ColoSockSecRedirector0Id != "" {
1972xc.colo_sock_sec_redirector0_id = C.CString(x.ColoSockSecRedirector0Id)}
1973if x.ColoSockSecRedirector0Ip != "" {
1974xc.colo_sock_sec_redirector0_ip = C.CString(x.ColoSockSecRedirector0Ip)}
1975if x.ColoSockSecRedirector0Port != "" {
1976xc.colo_sock_sec_redirector0_port = C.CString(x.ColoSockSecRedirector0Port)}
1977if x.ColoSockSecRedirector1Id != "" {
1978xc.colo_sock_sec_redirector1_id = C.CString(x.ColoSockSecRedirector1Id)}
1979if x.ColoSockSecRedirector1Ip != "" {
1980xc.colo_sock_sec_redirector1_ip = C.CString(x.ColoSockSecRedirector1Ip)}
1981if x.ColoSockSecRedirector1Port != "" {
1982xc.colo_sock_sec_redirector1_port = C.CString(x.ColoSockSecRedirector1Port)}
1983if x.ColoFilterSecRedirector0Queue != "" {
1984xc.colo_filter_sec_redirector0_queue = C.CString(x.ColoFilterSecRedirector0Queue)}
1985if x.ColoFilterSecRedirector0Indev != "" {
1986xc.colo_filter_sec_redirector0_indev = C.CString(x.ColoFilterSecRedirector0Indev)}
1987if x.ColoFilterSecRedirector0Outdev != "" {
1988xc.colo_filter_sec_redirector0_outdev = C.CString(x.ColoFilterSecRedirector0Outdev)}
1989if x.ColoFilterSecRedirector1Queue != "" {
1990xc.colo_filter_sec_redirector1_queue = C.CString(x.ColoFilterSecRedirector1Queue)}
1991if x.ColoFilterSecRedirector1Indev != "" {
1992xc.colo_filter_sec_redirector1_indev = C.CString(x.ColoFilterSecRedirector1Indev)}
1993if x.ColoFilterSecRedirector1Outdev != "" {
1994xc.colo_filter_sec_redirector1_outdev = C.CString(x.ColoFilterSecRedirector1Outdev)}
1995if x.ColoFilterSecRewriter0Queue != "" {
1996xc.colo_filter_sec_rewriter0_queue = C.CString(x.ColoFilterSecRewriter0Queue)}
1997if x.ColoCheckpointHost != "" {
1998xc.colo_checkpoint_host = C.CString(x.ColoCheckpointHost)}
1999if x.ColoCheckpointPort != "" {
2000xc.colo_checkpoint_port = C.CString(x.ColoCheckpointPort)}
2001
2002 return nil
2003 }
2004
2005// NewDevicePci returns an instance of DevicePci initialized with defaults.
2006func NewDevicePci() (*DevicePci, error) {
2007var (
2008x DevicePci
2009xc C.libxl_device_pci)
2010
2011C.libxl_device_pci_init(&xc)
2012defer C.libxl_device_pci_dispose(&xc)
2013
2014if err := x.fromC(&xc); err != nil {
2015return nil, err }
2016
2017return &x, nil}
2018
2019func (x *DevicePci) fromC(xc *C.libxl_device_pci) error {
2020 x.Func = byte(xc._func)
2021x.Dev = byte(xc.dev)
2022x.Bus = byte(xc.bus)
2023x.Domain = int(xc.domain)
2024x.Vdevfn = uint32(xc.vdevfn)
2025x.VfuncMask = uint32(xc.vfunc_mask)
2026x.Msitranslate = bool(xc.msitranslate)
2027x.PowerMgmt = bool(xc.power_mgmt)
2028x.Permissive = bool(xc.permissive)
2029x.Seize = bool(xc.seize)
2030x.RdmPolicy = RdmReservePolicy(xc.rdm_policy)
2031
2032 return nil}
2033
2034func (x *DevicePci) toC(xc *C.libxl_device_pci) (err error){defer func(){
2035if err != nil{
2036C.libxl_device_pci_dispose(xc)}
2037}()
2038
2039xc._func = C.uint8_t(x.Func)
2040xc.dev = C.uint8_t(x.Dev)
2041xc.bus = C.uint8_t(x.Bus)
2042xc.domain = C.int(x.Domain)
2043xc.vdevfn = C.uint32_t(x.Vdevfn)
2044xc.vfunc_mask = C.uint32_t(x.VfuncMask)
2045xc.msitranslate = C.bool(x.Msitranslate)
2046xc.power_mgmt = C.bool(x.PowerMgmt)
2047xc.permissive = C.bool(x.Permissive)
2048xc.seize = C.bool(x.Seize)
2049xc.rdm_policy = C.libxl_rdm_reserve_policy(x.RdmPolicy)
2050
2051 return nil
2052 }
2053
2054// NewDeviceRdm returns an instance of DeviceRdm initialized with defaults.
2055func NewDeviceRdm() (*DeviceRdm, error) {
2056var (
2057x DeviceRdm
2058xc C.libxl_device_rdm)
2059
2060C.libxl_device_rdm_init(&xc)
2061defer C.libxl_device_rdm_dispose(&xc)
2062
2063if err := x.fromC(&xc); err != nil {
2064return nil, err }
2065
2066return &x, nil}
2067
2068func (x *DeviceRdm) fromC(xc *C.libxl_device_rdm) error {
2069 x.Start = uint64(xc.start)
2070x.Size = uint64(xc.size)
2071x.Policy = RdmReservePolicy(xc.policy)
2072
2073 return nil}
2074
2075func (x *DeviceRdm) toC(xc *C.libxl_device_rdm) (err error){defer func(){
2076if err != nil{
2077C.libxl_device_rdm_dispose(xc)}
2078}()
2079
2080xc.start = C.uint64_t(x.Start)
2081xc.size = C.uint64_t(x.Size)
2082xc.policy = C.libxl_rdm_reserve_policy(x.Policy)
2083
2084 return nil
2085 }
2086
2087// NewDeviceUsbctrl returns an instance of DeviceUsbctrl initialized with defaults.
2088func NewDeviceUsbctrl() (*DeviceUsbctrl, error) {
2089var (
2090x DeviceUsbctrl
2091xc C.libxl_device_usbctrl)
2092
2093C.libxl_device_usbctrl_init(&xc)
2094defer C.libxl_device_usbctrl_dispose(&xc)
2095
2096if err := x.fromC(&xc); err != nil {
2097return nil, err }
2098
2099return &x, nil}
2100
2101func (x *DeviceUsbctrl) fromC(xc *C.libxl_device_usbctrl) error {
2102 x.Type = UsbctrlType(xc._type)
2103x.Devid = Devid(xc.devid)
2104x.Version = int(xc.version)
2105x.Ports = int(xc.ports)
2106x.BackendDomid = Domid(xc.backend_domid)
2107x.BackendDomname = C.GoString(xc.backend_domname)
2108
2109 return nil}
2110
2111func (x *DeviceUsbctrl) toC(xc *C.libxl_device_usbctrl) (err error){defer func(){
2112if err != nil{
2113C.libxl_device_usbctrl_dispose(xc)}
2114}()
2115
2116xc._type = C.libxl_usbctrl_type(x.Type)
2117xc.devid = C.libxl_devid(x.Devid)
2118xc.version = C.int(x.Version)
2119xc.ports = C.int(x.Ports)
2120xc.backend_domid = C.libxl_domid(x.BackendDomid)
2121if x.BackendDomname != "" {
2122xc.backend_domname = C.CString(x.BackendDomname)}
2123
2124 return nil
2125 }
2126
2127// NewDeviceUsbdev returns an instance of DeviceUsbdev initialized with defaults.
2128func NewDeviceUsbdev(utype UsbdevType) (*DeviceUsbdev, error) {
2129var (
2130x DeviceUsbdev
2131xc C.libxl_device_usbdev)
2132
2133C.libxl_device_usbdev_init(&xc)
2134C.libxl_device_usbdev_init_type(&xc, C.libxl_usbdev_type(utype))
2135defer C.libxl_device_usbdev_dispose(&xc)
2136
2137if err := x.fromC(&xc); err != nil {
2138return nil, err }
2139
2140return &x, nil}
2141
2142func (x *DeviceUsbdev) fromC(xc *C.libxl_device_usbdev) error {
2143 x.Ctrl = Devid(xc.ctrl)
2144x.Port = int(xc.port)
2145x.Type = UsbdevType(xc._type)
2146switch x.Type{
2147case UsbdevTypeHostdev:
2148var typeHostdev DeviceUsbdevTypeUnionHostdev
2149if err := typeHostdev.fromC(xc);err != nil {
2150 return fmt.Errorf("converting field typeHostdev: %v", err)
2151}
2152x.TypeUnion = typeHostdev
2153default:
2154return fmt.Errorf("invalid union key '%v'", x.Type)}
2155
2156 return nil}
2157
2158func (x *DeviceUsbdevTypeUnionHostdev) fromC(xc *C.libxl_device_usbdev) error {
2159if UsbdevType(xc._type) != UsbdevTypeHostdev {
2160return errors.New("expected union key UsbdevTypeHostdev")
2161}
2162
2163tmp := (*C.libxl_device_usbdev_type_union_hostdev)(unsafe.Pointer(&xc.u[0]))
2164x.Hostbus = byte(tmp.hostbus)
2165x.Hostaddr = byte(tmp.hostaddr)
2166return nil
2167}
2168
2169func (x *DeviceUsbdev) toC(xc *C.libxl_device_usbdev) (err error){defer func(){
2170if err != nil{
2171C.libxl_device_usbdev_dispose(xc)}
2172}()
2173
2174xc.ctrl = C.libxl_devid(x.Ctrl)
2175xc.port = C.int(x.Port)
2176xc._type = C.libxl_usbdev_type(x.Type)
2177switch x.Type{
2178case UsbdevTypeHostdev:
2179tmp, ok := x.TypeUnion.(DeviceUsbdevTypeUnionHostdev)
2180if !ok {
2181return errors.New("wrong type for union key type")
2182}
2183var hostdev C.libxl_device_usbdev_type_union_hostdev
2184hostdev.hostbus = C.uint8_t(tmp.Hostbus)
2185hostdev.hostaddr = C.uint8_t(tmp.Hostaddr)
2186hostdevBytes := C.GoBytes(unsafe.Pointer(&hostdev),C.sizeof_libxl_device_usbdev_type_union_hostdev)
2187copy(xc.u[:],hostdevBytes)
2188default:
2189return fmt.Errorf("invalid union key '%v'", x.Type)}
2190
2191 return nil
2192 }
2193
2194// NewDeviceDtdev returns an instance of DeviceDtdev initialized with defaults.
2195func NewDeviceDtdev() (*DeviceDtdev, error) {
2196var (
2197x DeviceDtdev
2198xc C.libxl_device_dtdev)
2199
2200C.libxl_device_dtdev_init(&xc)
2201defer C.libxl_device_dtdev_dispose(&xc)
2202
2203if err := x.fromC(&xc); err != nil {
2204return nil, err }
2205
2206return &x, nil}
2207
2208func (x *DeviceDtdev) fromC(xc *C.libxl_device_dtdev) error {
2209 x.Path = C.GoString(xc.path)
2210
2211 return nil}
2212
2213func (x *DeviceDtdev) toC(xc *C.libxl_device_dtdev) (err error){defer func(){
2214if err != nil{
2215C.libxl_device_dtdev_dispose(xc)}
2216}()
2217
2218if x.Path != "" {
2219xc.path = C.CString(x.Path)}
2220
2221 return nil
2222 }
2223
2224// NewDeviceVtpm returns an instance of DeviceVtpm initialized with defaults.
2225func NewDeviceVtpm() (*DeviceVtpm, error) {
2226var (
2227x DeviceVtpm
2228xc C.libxl_device_vtpm)
2229
2230C.libxl_device_vtpm_init(&xc)
2231defer C.libxl_device_vtpm_dispose(&xc)
2232
2233if err := x.fromC(&xc); err != nil {
2234return nil, err }
2235
2236return &x, nil}
2237
2238func (x *DeviceVtpm) fromC(xc *C.libxl_device_vtpm) error {
2239 x.BackendDomid = Domid(xc.backend_domid)
2240x.BackendDomname = C.GoString(xc.backend_domname)
2241x.Devid = Devid(xc.devid)
2242if err := x.Uuid.fromC(&xc.uuid);err != nil {
2243return fmt.Errorf("converting field Uuid: %v", err)
2244}
2245
2246 return nil}
2247
2248func (x *DeviceVtpm) toC(xc *C.libxl_device_vtpm) (err error){defer func(){
2249if err != nil{
2250C.libxl_device_vtpm_dispose(xc)}
2251}()
2252
2253xc.backend_domid = C.libxl_domid(x.BackendDomid)
2254if x.BackendDomname != "" {
2255xc.backend_domname = C.CString(x.BackendDomname)}
2256xc.devid = C.libxl_devid(x.Devid)
2257if err := x.Uuid.toC(&xc.uuid); err != nil {
2258return fmt.Errorf("converting field Uuid: %v", err)
2259}
2260
2261 return nil
2262 }
2263
2264// NewDeviceP9 returns an instance of DeviceP9 initialized with defaults.
2265func NewDeviceP9() (*DeviceP9, error) {
2266var (
2267x DeviceP9
2268xc C.libxl_device_p9)
2269
2270C.libxl_device_p9_init(&xc)
2271defer C.libxl_device_p9_dispose(&xc)
2272
2273if err := x.fromC(&xc); err != nil {
2274return nil, err }
2275
2276return &x, nil}
2277
2278func (x *DeviceP9) fromC(xc *C.libxl_device_p9) error {
2279 x.BackendDomid = Domid(xc.backend_domid)
2280x.BackendDomname = C.GoString(xc.backend_domname)
2281x.Tag = C.GoString(xc.tag)
2282x.Path = C.GoString(xc.path)
2283x.SecurityModel = C.GoString(xc.security_model)
2284x.Devid = Devid(xc.devid)
2285
2286 return nil}
2287
2288func (x *DeviceP9) toC(xc *C.libxl_device_p9) (err error){defer func(){
2289if err != nil{
2290C.libxl_device_p9_dispose(xc)}
2291}()
2292
2293xc.backend_domid = C.libxl_domid(x.BackendDomid)
2294if x.BackendDomname != "" {
2295xc.backend_domname = C.CString(x.BackendDomname)}
2296if x.Tag != "" {
2297xc.tag = C.CString(x.Tag)}
2298if x.Path != "" {
2299xc.path = C.CString(x.Path)}
2300if x.SecurityModel != "" {
2301xc.security_model = C.CString(x.SecurityModel)}
2302xc.devid = C.libxl_devid(x.Devid)
2303
2304 return nil
2305 }
2306
2307// NewDevicePvcallsif returns an instance of DevicePvcallsif initialized with defaults.
2308func NewDevicePvcallsif() (*DevicePvcallsif, error) {
2309var (
2310x DevicePvcallsif
2311xc C.libxl_device_pvcallsif)
2312
2313C.libxl_device_pvcallsif_init(&xc)
2314defer C.libxl_device_pvcallsif_dispose(&xc)
2315
2316if err := x.fromC(&xc); err != nil {
2317return nil, err }
2318
2319return &x, nil}
2320
2321func (x *DevicePvcallsif) fromC(xc *C.libxl_device_pvcallsif) error {
2322 x.BackendDomid = Domid(xc.backend_domid)
2323x.BackendDomname = C.GoString(xc.backend_domname)
2324x.Devid = Devid(xc.devid)
2325
2326 return nil}
2327
2328func (x *DevicePvcallsif) toC(xc *C.libxl_device_pvcallsif) (err error){defer func(){
2329if err != nil{
2330C.libxl_device_pvcallsif_dispose(xc)}
2331}()
2332
2333xc.backend_domid = C.libxl_domid(x.BackendDomid)
2334if x.BackendDomname != "" {
2335xc.backend_domname = C.CString(x.BackendDomname)}
2336xc.devid = C.libxl_devid(x.Devid)
2337
2338 return nil
2339 }
2340
2341// NewDeviceChannel returns an instance of DeviceChannel initialized with defaults.
2342func NewDeviceChannel(connection ChannelConnection) (*DeviceChannel, error) {
2343var (
2344x DeviceChannel
2345xc C.libxl_device_channel)
2346
2347C.libxl_device_channel_init(&xc)
2348C.libxl_device_channel_init_connection(&xc, C.libxl_channel_connection(connection))
2349defer C.libxl_device_channel_dispose(&xc)
2350
2351if err := x.fromC(&xc); err != nil {
2352return nil, err }
2353
2354return &x, nil}
2355
2356func (x *DeviceChannel) fromC(xc *C.libxl_device_channel) error {
2357 x.BackendDomid = Domid(xc.backend_domid)
2358x.BackendDomname = C.GoString(xc.backend_domname)
2359x.Devid = Devid(xc.devid)
2360x.Name = C.GoString(xc.name)
2361x.Connection = ChannelConnection(xc.connection)
2362switch x.Connection{
2363case ChannelConnectionPty:
2364x.ConnectionUnion = nil
2365case ChannelConnectionSocket:
2366var connectionSocket DeviceChannelConnectionUnionSocket
2367if err := connectionSocket.fromC(xc);err != nil {
2368 return fmt.Errorf("converting field connectionSocket: %v", err)
2369}
2370x.ConnectionUnion = connectionSocket
2371case ChannelConnectionUnknown:
2372x.ConnectionUnion = nil
2373default:
2374return fmt.Errorf("invalid union key '%v'", x.Connection)}
2375
2376 return nil}
2377
2378func (x *DeviceChannelConnectionUnionSocket) fromC(xc *C.libxl_device_channel) error {
2379if ChannelConnection(xc.connection) != ChannelConnectionSocket {
2380return errors.New("expected union key ChannelConnectionSocket")
2381}
2382
2383tmp := (*C.libxl_device_channel_connection_union_socket)(unsafe.Pointer(&xc.u[0]))
2384x.Path = C.GoString(tmp.path)
2385return nil
2386}
2387
2388func (x *DeviceChannel) toC(xc *C.libxl_device_channel) (err error){defer func(){
2389if err != nil{
2390C.libxl_device_channel_dispose(xc)}
2391}()
2392
2393xc.backend_domid = C.libxl_domid(x.BackendDomid)
2394if x.BackendDomname != "" {
2395xc.backend_domname = C.CString(x.BackendDomname)}
2396xc.devid = C.libxl_devid(x.Devid)
2397if x.Name != "" {
2398xc.name = C.CString(x.Name)}
2399xc.connection = C.libxl_channel_connection(x.Connection)
2400switch x.Connection{
2401case ChannelConnectionUnknown:
2402break
2403case ChannelConnectionPty:
2404break
2405case ChannelConnectionSocket:
2406tmp, ok := x.ConnectionUnion.(DeviceChannelConnectionUnionSocket)
2407if !ok {
2408return errors.New("wrong type for union key connection")
2409}
2410var socket C.libxl_device_channel_connection_union_socket
2411if tmp.Path != "" {
2412socket.path = C.CString(tmp.Path)}
2413socketBytes := C.GoBytes(unsafe.Pointer(&socket),C.sizeof_libxl_device_channel_connection_union_socket)
2414copy(xc.u[:],socketBytes)
2415default:
2416return fmt.Errorf("invalid union key '%v'", x.Connection)}
2417
2418 return nil
2419 }
2420
2421// NewConnectorParam returns an instance of ConnectorParam initialized with defaults.
2422func NewConnectorParam() (*ConnectorParam, error) {
2423var (
2424x ConnectorParam
2425xc C.libxl_connector_param)
2426
2427C.libxl_connector_param_init(&xc)
2428defer C.libxl_connector_param_dispose(&xc)
2429
2430if err := x.fromC(&xc); err != nil {
2431return nil, err }
2432
2433return &x, nil}
2434
2435func (x *ConnectorParam) fromC(xc *C.libxl_connector_param) error {
2436 x.UniqueId = C.GoString(xc.unique_id)
2437x.Width = uint32(xc.width)
2438x.Height = uint32(xc.height)
2439
2440 return nil}
2441
2442func (x *ConnectorParam) toC(xc *C.libxl_connector_param) (err error){defer func(){
2443if err != nil{
2444C.libxl_connector_param_dispose(xc)}
2445}()
2446
2447if x.UniqueId != "" {
2448xc.unique_id = C.CString(x.UniqueId)}
2449xc.width = C.uint32_t(x.Width)
2450xc.height = C.uint32_t(x.Height)
2451
2452 return nil
2453 }
2454
2455// NewDeviceVdispl returns an instance of DeviceVdispl initialized with defaults.
2456func NewDeviceVdispl() (*DeviceVdispl, error) {
2457var (
2458x DeviceVdispl
2459xc C.libxl_device_vdispl)
2460
2461C.libxl_device_vdispl_init(&xc)
2462defer C.libxl_device_vdispl_dispose(&xc)
2463
2464if err := x.fromC(&xc); err != nil {
2465return nil, err }
2466
2467return &x, nil}
2468
2469func (x *DeviceVdispl) fromC(xc *C.libxl_device_vdispl) error {
2470 x.BackendDomid = Domid(xc.backend_domid)
2471x.BackendDomname = C.GoString(xc.backend_domname)
2472x.Devid = Devid(xc.devid)
2473x.BeAlloc = bool(xc.be_alloc)
2474x.Connectors = nil
2475if n := int(xc.num_connectors); n > 0 {
2476cConnectors := (*[1<<28]C.libxl_connector_param)(unsafe.Pointer(xc.connectors))[:n:n]
2477x.Connectors = make([]ConnectorParam, n)
2478for i, v := range cConnectors {
2479if err := x.Connectors[i].fromC(&v); err != nil {
2480return fmt.Errorf("converting field Connectors: %v", err) }
2481}
2482}
2483
2484 return nil}
2485
2486func (x *DeviceVdispl) toC(xc *C.libxl_device_vdispl) (err error){defer func(){
2487if err != nil{
2488C.libxl_device_vdispl_dispose(xc)}
2489}()
2490
2491xc.backend_domid = C.libxl_domid(x.BackendDomid)
2492if x.BackendDomname != "" {
2493xc.backend_domname = C.CString(x.BackendDomname)}
2494xc.devid = C.libxl_devid(x.Devid)
2495xc.be_alloc = C.bool(x.BeAlloc)
2496if numConnectors := len(x.Connectors); numConnectors > 0 {
2497xc.connectors = (*C.libxl_connector_param)(C.malloc(C.ulong(numConnectors)*C.sizeof_libxl_connector_param))
2498xc.num_connectors = C.int(numConnectors)
2499cConnectors := (*[1<<28]C.libxl_connector_param)(unsafe.Pointer(xc.connectors))[:numConnectors:numConnectors]
2500for i,v := range x.Connectors {
2501if err := v.toC(&cConnectors[i]); err != nil {
2502return fmt.Errorf("converting field Connectors: %v", err)
2503}
2504}
2505}
2506
2507 return nil
2508 }
2509
2510// NewVsndParams returns an instance of VsndParams initialized with defaults.
2511func NewVsndParams() (*VsndParams, error) {
2512var (
2513x VsndParams
2514xc C.libxl_vsnd_params)
2515
2516C.libxl_vsnd_params_init(&xc)
2517defer C.libxl_vsnd_params_dispose(&xc)
2518
2519if err := x.fromC(&xc); err != nil {
2520return nil, err }
2521
2522return &x, nil}
2523
2524func (x *VsndParams) fromC(xc *C.libxl_vsnd_params) error {
2525 x.SampleRates = nil
2526if n := int(xc.num_sample_rates); n > 0 {
2527cSampleRates := (*[1<<28]C.uint32_t)(unsafe.Pointer(xc.sample_rates))[:n:n]
2528x.SampleRates = make([]uint32, n)
2529for i, v := range cSampleRates {
2530x.SampleRates[i] = uint32(v)
2531}
2532}
2533x.SampleFormats = nil
2534if n := int(xc.num_sample_formats); n > 0 {
2535cSampleFormats := (*[1<<28]C.libxl_vsnd_pcm_format)(unsafe.Pointer(xc.sample_formats))[:n:n]
2536x.SampleFormats = make([]VsndPcmFormat, n)
2537for i, v := range cSampleFormats {
2538x.SampleFormats[i] = VsndPcmFormat(v)
2539}
2540}
2541x.ChannelsMin = uint32(xc.channels_min)
2542x.ChannelsMax = uint32(xc.channels_max)
2543x.BufferSize = uint32(xc.buffer_size)
2544
2545 return nil}
2546
2547func (x *VsndParams) toC(xc *C.libxl_vsnd_params) (err error){defer func(){
2548if err != nil{
2549C.libxl_vsnd_params_dispose(xc)}
2550}()
2551
2552if numSampleRates := len(x.SampleRates); numSampleRates > 0 {
2553xc.sample_rates = (*C.uint32_t)(C.malloc(C.size_t(numSampleRates*numSampleRates)))
2554xc.num_sample_rates = C.int(numSampleRates)
2555cSampleRates := (*[1<<28]C.uint32_t)(unsafe.Pointer(xc.sample_rates))[:numSampleRates:numSampleRates]
2556for i,v := range x.SampleRates {
2557cSampleRates[i] = C.uint32_t(v)
2558}
2559}
2560if numSampleFormats := len(x.SampleFormats); numSampleFormats > 0 {
2561xc.sample_formats = (*C.libxl_vsnd_pcm_format)(C.malloc(C.size_t(numSampleFormats*numSampleFormats)))
2562xc.num_sample_formats = C.int(numSampleFormats)
2563cSampleFormats := (*[1<<28]C.libxl_vsnd_pcm_format)(unsafe.Pointer(xc.sample_formats))[:numSampleFormats:numSampleFormats]
2564for i,v := range x.SampleFormats {
2565cSampleFormats[i] = C.libxl_vsnd_pcm_format(v)
2566}
2567}
2568xc.channels_min = C.uint32_t(x.ChannelsMin)
2569xc.channels_max = C.uint32_t(x.ChannelsMax)
2570xc.buffer_size = C.uint32_t(x.BufferSize)
2571
2572 return nil
2573 }
2574
2575// NewVsndStream returns an instance of VsndStream initialized with defaults.
2576func NewVsndStream() (*VsndStream, error) {
2577var (
2578x VsndStream
2579xc C.libxl_vsnd_stream)
2580
2581C.libxl_vsnd_stream_init(&xc)
2582defer C.libxl_vsnd_stream_dispose(&xc)
2583
2584if err := x.fromC(&xc); err != nil {
2585return nil, err }
2586
2587return &x, nil}
2588
2589func (x *VsndStream) fromC(xc *C.libxl_vsnd_stream) error {
2590 x.UniqueId = C.GoString(xc.unique_id)
2591x.Type = VsndStreamType(xc._type)
2592if err := x.Params.fromC(&xc.params);err != nil {
2593return fmt.Errorf("converting field Params: %v", err)
2594}
2595
2596 return nil}
2597
2598func (x *VsndStream) toC(xc *C.libxl_vsnd_stream) (err error){defer func(){
2599if err != nil{
2600C.libxl_vsnd_stream_dispose(xc)}
2601}()
2602
2603if x.UniqueId != "" {
2604xc.unique_id = C.CString(x.UniqueId)}
2605xc._type = C.libxl_vsnd_stream_type(x.Type)
2606if err := x.Params.toC(&xc.params); err != nil {
2607return fmt.Errorf("converting field Params: %v", err)
2608}
2609
2610 return nil
2611 }
2612
2613// NewVsndPcm returns an instance of VsndPcm initialized with defaults.
2614func NewVsndPcm() (*VsndPcm, error) {
2615var (
2616x VsndPcm
2617xc C.libxl_vsnd_pcm)
2618
2619C.libxl_vsnd_pcm_init(&xc)
2620defer C.libxl_vsnd_pcm_dispose(&xc)
2621
2622if err := x.fromC(&xc); err != nil {
2623return nil, err }
2624
2625return &x, nil}
2626
2627func (x *VsndPcm) fromC(xc *C.libxl_vsnd_pcm) error {
2628 x.Name = C.GoString(xc.name)
2629if err := x.Params.fromC(&xc.params);err != nil {
2630return fmt.Errorf("converting field Params: %v", err)
2631}
2632x.Streams = nil
2633if n := int(xc.num_vsnd_streams); n > 0 {
2634cStreams := (*[1<<28]C.libxl_vsnd_stream)(unsafe.Pointer(xc.streams))[:n:n]
2635x.Streams = make([]VsndStream, n)
2636for i, v := range cStreams {
2637if err := x.Streams[i].fromC(&v); err != nil {
2638return fmt.Errorf("converting field Streams: %v", err) }
2639}
2640}
2641
2642 return nil}
2643
2644func (x *VsndPcm) toC(xc *C.libxl_vsnd_pcm) (err error){defer func(){
2645if err != nil{
2646C.libxl_vsnd_pcm_dispose(xc)}
2647}()
2648
2649if x.Name != "" {
2650xc.name = C.CString(x.Name)}
2651if err := x.Params.toC(&xc.params); err != nil {
2652return fmt.Errorf("converting field Params: %v", err)
2653}
2654if numVsndStreams := len(x.Streams); numVsndStreams > 0 {
2655xc.streams = (*C.libxl_vsnd_stream)(C.malloc(C.ulong(numVsndStreams)*C.sizeof_libxl_vsnd_stream))
2656xc.num_vsnd_streams = C.int(numVsndStreams)
2657cStreams := (*[1<<28]C.libxl_vsnd_stream)(unsafe.Pointer(xc.streams))[:numVsndStreams:numVsndStreams]
2658for i,v := range x.Streams {
2659if err := v.toC(&cStreams[i]); err != nil {
2660return fmt.Errorf("converting field Streams: %v", err)
2661}
2662}
2663}
2664
2665 return nil
2666 }
2667
2668// NewDeviceVsnd returns an instance of DeviceVsnd initialized with defaults.
2669func NewDeviceVsnd() (*DeviceVsnd, error) {
2670var (
2671x DeviceVsnd
2672xc C.libxl_device_vsnd)
2673
2674C.libxl_device_vsnd_init(&xc)
2675defer C.libxl_device_vsnd_dispose(&xc)
2676
2677if err := x.fromC(&xc); err != nil {
2678return nil, err }
2679
2680return &x, nil}
2681
2682func (x *DeviceVsnd) fromC(xc *C.libxl_device_vsnd) error {
2683 x.BackendDomid = Domid(xc.backend_domid)
2684x.BackendDomname = C.GoString(xc.backend_domname)
2685x.Devid = Devid(xc.devid)
2686x.ShortName = C.GoString(xc.short_name)
2687x.LongName = C.GoString(xc.long_name)
2688if err := x.Params.fromC(&xc.params);err != nil {
2689return fmt.Errorf("converting field Params: %v", err)
2690}
2691x.Pcms = nil
2692if n := int(xc.num_vsnd_pcms); n > 0 {
2693cPcms := (*[1<<28]C.libxl_vsnd_pcm)(unsafe.Pointer(xc.pcms))[:n:n]
2694x.Pcms = make([]VsndPcm, n)
2695for i, v := range cPcms {
2696if err := x.Pcms[i].fromC(&v); err != nil {
2697return fmt.Errorf("converting field Pcms: %v", err) }
2698}
2699}
2700
2701 return nil}
2702
2703func (x *DeviceVsnd) toC(xc *C.libxl_device_vsnd) (err error){defer func(){
2704if err != nil{
2705C.libxl_device_vsnd_dispose(xc)}
2706}()
2707
2708xc.backend_domid = C.libxl_domid(x.BackendDomid)
2709if x.BackendDomname != "" {
2710xc.backend_domname = C.CString(x.BackendDomname)}
2711xc.devid = C.libxl_devid(x.Devid)
2712if x.ShortName != "" {
2713xc.short_name = C.CString(x.ShortName)}
2714if x.LongName != "" {
2715xc.long_name = C.CString(x.LongName)}
2716if err := x.Params.toC(&xc.params); err != nil {
2717return fmt.Errorf("converting field Params: %v", err)
2718}
2719if numVsndPcms := len(x.Pcms); numVsndPcms > 0 {
2720xc.pcms = (*C.libxl_vsnd_pcm)(C.malloc(C.ulong(numVsndPcms)*C.sizeof_libxl_vsnd_pcm))
2721xc.num_vsnd_pcms = C.int(numVsndPcms)
2722cPcms := (*[1<<28]C.libxl_vsnd_pcm)(unsafe.Pointer(xc.pcms))[:numVsndPcms:numVsndPcms]
2723for i,v := range x.Pcms {
2724if err := v.toC(&cPcms[i]); err != nil {
2725return fmt.Errorf("converting field Pcms: %v", err)
2726}
2727}
2728}
2729
2730 return nil
2731 }
2732
2733// NewDomainConfig returns an instance of DomainConfig initialized with defaults.
2734func NewDomainConfig() (*DomainConfig, error) {
2735var (
2736x DomainConfig
2737xc C.libxl_domain_config)
2738
2739C.libxl_domain_config_init(&xc)
2740defer C.libxl_domain_config_dispose(&xc)
2741
2742if err := x.fromC(&xc); err != nil {
2743return nil, err }
2744
2745return &x, nil}
2746
2747func (x *DomainConfig) fromC(xc *C.libxl_domain_config) error {
2748 if err := x.CInfo.fromC(&xc.c_info);err != nil {
2749return fmt.Errorf("converting field CInfo: %v", err)
2750}
2751if err := x.BInfo.fromC(&xc.b_info);err != nil {
2752return fmt.Errorf("converting field BInfo: %v", err)
2753}
2754x.Disks = nil
2755if n := int(xc.num_disks); n > 0 {
2756cDisks := (*[1<<28]C.libxl_device_disk)(unsafe.Pointer(xc.disks))[:n:n]
2757x.Disks = make([]DeviceDisk, n)
2758for i, v := range cDisks {
2759if err := x.Disks[i].fromC(&v); err != nil {
2760return fmt.Errorf("converting field Disks: %v", err) }
2761}
2762}
2763x.Nics = nil
2764if n := int(xc.num_nics); n > 0 {
2765cNics := (*[1<<28]C.libxl_device_nic)(unsafe.Pointer(xc.nics))[:n:n]
2766x.Nics = make([]DeviceNic, n)
2767for i, v := range cNics {
2768if err := x.Nics[i].fromC(&v); err != nil {
2769return fmt.Errorf("converting field Nics: %v", err) }
2770}
2771}
2772x.Pcidevs = nil
2773if n := int(xc.num_pcidevs); n > 0 {
2774cPcidevs := (*[1<<28]C.libxl_device_pci)(unsafe.Pointer(xc.pcidevs))[:n:n]
2775x.Pcidevs = make([]DevicePci, n)
2776for i, v := range cPcidevs {
2777if err := x.Pcidevs[i].fromC(&v); err != nil {
2778return fmt.Errorf("converting field Pcidevs: %v", err) }
2779}
2780}
2781x.Rdms = nil
2782if n := int(xc.num_rdms); n > 0 {
2783cRdms := (*[1<<28]C.libxl_device_rdm)(unsafe.Pointer(xc.rdms))[:n:n]
2784x.Rdms = make([]DeviceRdm, n)
2785for i, v := range cRdms {
2786if err := x.Rdms[i].fromC(&v); err != nil {
2787return fmt.Errorf("converting field Rdms: %v", err) }
2788}
2789}
2790x.Dtdevs = nil
2791if n := int(xc.num_dtdevs); n > 0 {
2792cDtdevs := (*[1<<28]C.libxl_device_dtdev)(unsafe.Pointer(xc.dtdevs))[:n:n]
2793x.Dtdevs = make([]DeviceDtdev, n)
2794for i, v := range cDtdevs {
2795if err := x.Dtdevs[i].fromC(&v); err != nil {
2796return fmt.Errorf("converting field Dtdevs: %v", err) }
2797}
2798}
2799x.Vfbs = nil
2800if n := int(xc.num_vfbs); n > 0 {
2801cVfbs := (*[1<<28]C.libxl_device_vfb)(unsafe.Pointer(xc.vfbs))[:n:n]
2802x.Vfbs = make([]DeviceVfb, n)
2803for i, v := range cVfbs {
2804if err := x.Vfbs[i].fromC(&v); err != nil {
2805return fmt.Errorf("converting field Vfbs: %v", err) }
2806}
2807}
2808x.Vkbs = nil
2809if n := int(xc.num_vkbs); n > 0 {
2810cVkbs := (*[1<<28]C.libxl_device_vkb)(unsafe.Pointer(xc.vkbs))[:n:n]
2811x.Vkbs = make([]DeviceVkb, n)
2812for i, v := range cVkbs {
2813if err := x.Vkbs[i].fromC(&v); err != nil {
2814return fmt.Errorf("converting field Vkbs: %v", err) }
2815}
2816}
2817x.Vtpms = nil
2818if n := int(xc.num_vtpms); n > 0 {
2819cVtpms := (*[1<<28]C.libxl_device_vtpm)(unsafe.Pointer(xc.vtpms))[:n:n]
2820x.Vtpms = make([]DeviceVtpm, n)
2821for i, v := range cVtpms {
2822if err := x.Vtpms[i].fromC(&v); err != nil {
2823return fmt.Errorf("converting field Vtpms: %v", err) }
2824}
2825}
2826x.P9S = nil
2827if n := int(xc.num_p9s); n > 0 {
2828cP9S := (*[1<<28]C.libxl_device_p9)(unsafe.Pointer(xc.p9s))[:n:n]
2829x.P9S = make([]DeviceP9, n)
2830for i, v := range cP9S {
2831if err := x.P9S[i].fromC(&v); err != nil {
2832return fmt.Errorf("converting field P9S: %v", err) }
2833}
2834}
2835x.Pvcallsifs = nil
2836if n := int(xc.num_pvcallsifs); n > 0 {
2837cPvcallsifs := (*[1<<28]C.libxl_device_pvcallsif)(unsafe.Pointer(xc.pvcallsifs))[:n:n]
2838x.Pvcallsifs = make([]DevicePvcallsif, n)
2839for i, v := range cPvcallsifs {
2840if err := x.Pvcallsifs[i].fromC(&v); err != nil {
2841return fmt.Errorf("converting field Pvcallsifs: %v", err) }
2842}
2843}
2844x.Vdispls = nil
2845if n := int(xc.num_vdispls); n > 0 {
2846cVdispls := (*[1<<28]C.libxl_device_vdispl)(unsafe.Pointer(xc.vdispls))[:n:n]
2847x.Vdispls = make([]DeviceVdispl, n)
2848for i, v := range cVdispls {
2849if err := x.Vdispls[i].fromC(&v); err != nil {
2850return fmt.Errorf("converting field Vdispls: %v", err) }
2851}
2852}
2853x.Vsnds = nil
2854if n := int(xc.num_vsnds); n > 0 {
2855cVsnds := (*[1<<28]C.libxl_device_vsnd)(unsafe.Pointer(xc.vsnds))[:n:n]
2856x.Vsnds = make([]DeviceVsnd, n)
2857for i, v := range cVsnds {
2858if err := x.Vsnds[i].fromC(&v); err != nil {
2859return fmt.Errorf("converting field Vsnds: %v", err) }
2860}
2861}
2862x.Channels = nil
2863if n := int(xc.num_channels); n > 0 {
2864cChannels := (*[1<<28]C.libxl_device_channel)(unsafe.Pointer(xc.channels))[:n:n]
2865x.Channels = make([]DeviceChannel, n)
2866for i, v := range cChannels {
2867if err := x.Channels[i].fromC(&v); err != nil {
2868return fmt.Errorf("converting field Channels: %v", err) }
2869}
2870}
2871x.Usbctrls = nil
2872if n := int(xc.num_usbctrls); n > 0 {
2873cUsbctrls := (*[1<<28]C.libxl_device_usbctrl)(unsafe.Pointer(xc.usbctrls))[:n:n]
2874x.Usbctrls = make([]DeviceUsbctrl, n)
2875for i, v := range cUsbctrls {
2876if err := x.Usbctrls[i].fromC(&v); err != nil {
2877return fmt.Errorf("converting field Usbctrls: %v", err) }
2878}
2879}
2880x.Usbdevs = nil
2881if n := int(xc.num_usbdevs); n > 0 {
2882cUsbdevs := (*[1<<28]C.libxl_device_usbdev)(unsafe.Pointer(xc.usbdevs))[:n:n]
2883x.Usbdevs = make([]DeviceUsbdev, n)
2884for i, v := range cUsbdevs {
2885if err := x.Usbdevs[i].fromC(&v); err != nil {
2886return fmt.Errorf("converting field Usbdevs: %v", err) }
2887}
2888}
2889x.OnPoweroff = ActionOnShutdown(xc.on_poweroff)
2890x.OnReboot = ActionOnShutdown(xc.on_reboot)
2891x.OnWatchdog = ActionOnShutdown(xc.on_watchdog)
2892x.OnCrash = ActionOnShutdown(xc.on_crash)
2893x.OnSoftReset = ActionOnShutdown(xc.on_soft_reset)
2894
2895 return nil}
2896
2897func (x *DomainConfig) toC(xc *C.libxl_domain_config) (err error){defer func(){
2898if err != nil{
2899C.libxl_domain_config_dispose(xc)}
2900}()
2901
2902if err := x.CInfo.toC(&xc.c_info); err != nil {
2903return fmt.Errorf("converting field CInfo: %v", err)
2904}
2905if err := x.BInfo.toC(&xc.b_info); err != nil {
2906return fmt.Errorf("converting field BInfo: %v", err)
2907}
2908if numDisks := len(x.Disks); numDisks > 0 {
2909xc.disks = (*C.libxl_device_disk)(C.malloc(C.ulong(numDisks)*C.sizeof_libxl_device_disk))
2910xc.num_disks = C.int(numDisks)
2911cDisks := (*[1<<28]C.libxl_device_disk)(unsafe.Pointer(xc.disks))[:numDisks:numDisks]
2912for i,v := range x.Disks {
2913if err := v.toC(&cDisks[i]); err != nil {
2914return fmt.Errorf("converting field Disks: %v", err)
2915}
2916}
2917}
2918if numNics := len(x.Nics); numNics > 0 {
2919xc.nics = (*C.libxl_device_nic)(C.malloc(C.ulong(numNics)*C.sizeof_libxl_device_nic))
2920xc.num_nics = C.int(numNics)
2921cNics := (*[1<<28]C.libxl_device_nic)(unsafe.Pointer(xc.nics))[:numNics:numNics]
2922for i,v := range x.Nics {
2923if err := v.toC(&cNics[i]); err != nil {
2924return fmt.Errorf("converting field Nics: %v", err)
2925}
2926}
2927}
2928if numPcidevs := len(x.Pcidevs); numPcidevs > 0 {
2929xc.pcidevs = (*C.libxl_device_pci)(C.malloc(C.ulong(numPcidevs)*C.sizeof_libxl_device_pci))
2930xc.num_pcidevs = C.int(numPcidevs)
2931cPcidevs := (*[1<<28]C.libxl_device_pci)(unsafe.Pointer(xc.pcidevs))[:numPcidevs:numPcidevs]
2932for i,v := range x.Pcidevs {
2933if err := v.toC(&cPcidevs[i]); err != nil {
2934return fmt.Errorf("converting field Pcidevs: %v", err)
2935}
2936}
2937}
2938if numRdms := len(x.Rdms); numRdms > 0 {
2939xc.rdms = (*C.libxl_device_rdm)(C.malloc(C.ulong(numRdms)*C.sizeof_libxl_device_rdm))
2940xc.num_rdms = C.int(numRdms)
2941cRdms := (*[1<<28]C.libxl_device_rdm)(unsafe.Pointer(xc.rdms))[:numRdms:numRdms]
2942for i,v := range x.Rdms {
2943if err := v.toC(&cRdms[i]); err != nil {
2944return fmt.Errorf("converting field Rdms: %v", err)
2945}
2946}
2947}
2948if numDtdevs := len(x.Dtdevs); numDtdevs > 0 {
2949xc.dtdevs = (*C.libxl_device_dtdev)(C.malloc(C.ulong(numDtdevs)*C.sizeof_libxl_device_dtdev))
2950xc.num_dtdevs = C.int(numDtdevs)
2951cDtdevs := (*[1<<28]C.libxl_device_dtdev)(unsafe.Pointer(xc.dtdevs))[:numDtdevs:numDtdevs]
2952for i,v := range x.Dtdevs {
2953if err := v.toC(&cDtdevs[i]); err != nil {
2954return fmt.Errorf("converting field Dtdevs: %v", err)
2955}
2956}
2957}
2958if numVfbs := len(x.Vfbs); numVfbs > 0 {
2959xc.vfbs = (*C.libxl_device_vfb)(C.malloc(C.ulong(numVfbs)*C.sizeof_libxl_device_vfb))
2960xc.num_vfbs = C.int(numVfbs)
2961cVfbs := (*[1<<28]C.libxl_device_vfb)(unsafe.Pointer(xc.vfbs))[:numVfbs:numVfbs]
2962for i,v := range x.Vfbs {
2963if err := v.toC(&cVfbs[i]); err != nil {
2964return fmt.Errorf("converting field Vfbs: %v", err)
2965}
2966}
2967}
2968if numVkbs := len(x.Vkbs); numVkbs > 0 {
2969xc.vkbs = (*C.libxl_device_vkb)(C.malloc(C.ulong(numVkbs)*C.sizeof_libxl_device_vkb))
2970xc.num_vkbs = C.int(numVkbs)
2971cVkbs := (*[1<<28]C.libxl_device_vkb)(unsafe.Pointer(xc.vkbs))[:numVkbs:numVkbs]
2972for i,v := range x.Vkbs {
2973if err := v.toC(&cVkbs[i]); err != nil {
2974return fmt.Errorf("converting field Vkbs: %v", err)
2975}
2976}
2977}
2978if numVtpms := len(x.Vtpms); numVtpms > 0 {
2979xc.vtpms = (*C.libxl_device_vtpm)(C.malloc(C.ulong(numVtpms)*C.sizeof_libxl_device_vtpm))
2980xc.num_vtpms = C.int(numVtpms)
2981cVtpms := (*[1<<28]C.libxl_device_vtpm)(unsafe.Pointer(xc.vtpms))[:numVtpms:numVtpms]
2982for i,v := range x.Vtpms {
2983if err := v.toC(&cVtpms[i]); err != nil {
2984return fmt.Errorf("converting field Vtpms: %v", err)
2985}
2986}
2987}
2988if numP9S := len(x.P9S); numP9S > 0 {
2989xc.p9s = (*C.libxl_device_p9)(C.malloc(C.ulong(numP9S)*C.sizeof_libxl_device_p9))
2990xc.num_p9s = C.int(numP9S)
2991cP9S := (*[1<<28]C.libxl_device_p9)(unsafe.Pointer(xc.p9s))[:numP9S:numP9S]
2992for i,v := range x.P9S {
2993if err := v.toC(&cP9S[i]); err != nil {
2994return fmt.Errorf("converting field P9S: %v", err)
2995}
2996}
2997}
2998if numPvcallsifs := len(x.Pvcallsifs); numPvcallsifs > 0 {
2999xc.pvcallsifs = (*C.libxl_device_pvcallsif)(C.malloc(C.ulong(numPvcallsifs)*C.sizeof_libxl_device_pvcallsif))
3000xc.num_pvcallsifs = C.int(numPvcallsifs)
3001cPvcallsifs := (*[1<<28]C.libxl_device_pvcallsif)(unsafe.Pointer(xc.pvcallsifs))[:numPvcallsifs:numPvcallsifs]
3002for i,v := range x.Pvcallsifs {
3003if err := v.toC(&cPvcallsifs[i]); err != nil {
3004return fmt.Errorf("converting field Pvcallsifs: %v", err)
3005}
3006}
3007}
3008if numVdispls := len(x.Vdispls); numVdispls > 0 {
3009xc.vdispls = (*C.libxl_device_vdispl)(C.malloc(C.ulong(numVdispls)*C.sizeof_libxl_device_vdispl))
3010xc.num_vdispls = C.int(numVdispls)
3011cVdispls := (*[1<<28]C.libxl_device_vdispl)(unsafe.Pointer(xc.vdispls))[:numVdispls:numVdispls]
3012for i,v := range x.Vdispls {
3013if err := v.toC(&cVdispls[i]); err != nil {
3014return fmt.Errorf("converting field Vdispls: %v", err)
3015}
3016}
3017}
3018if numVsnds := len(x.Vsnds); numVsnds > 0 {
3019xc.vsnds = (*C.libxl_device_vsnd)(C.malloc(C.ulong(numVsnds)*C.sizeof_libxl_device_vsnd))
3020xc.num_vsnds = C.int(numVsnds)
3021cVsnds := (*[1<<28]C.libxl_device_vsnd)(unsafe.Pointer(xc.vsnds))[:numVsnds:numVsnds]
3022for i,v := range x.Vsnds {
3023if err := v.toC(&cVsnds[i]); err != nil {
3024return fmt.Errorf("converting field Vsnds: %v", err)
3025}
3026}
3027}
3028if numChannels := len(x.Channels); numChannels > 0 {
3029xc.channels = (*C.libxl_device_channel)(C.malloc(C.ulong(numChannels)*C.sizeof_libxl_device_channel))
3030xc.num_channels = C.int(numChannels)
3031cChannels := (*[1<<28]C.libxl_device_channel)(unsafe.Pointer(xc.channels))[:numChannels:numChannels]
3032for i,v := range x.Channels {
3033if err := v.toC(&cChannels[i]); err != nil {
3034return fmt.Errorf("converting field Channels: %v", err)
3035}
3036}
3037}
3038if numUsbctrls := len(x.Usbctrls); numUsbctrls > 0 {
3039xc.usbctrls = (*C.libxl_device_usbctrl)(C.malloc(C.ulong(numUsbctrls)*C.sizeof_libxl_device_usbctrl))
3040xc.num_usbctrls = C.int(numUsbctrls)
3041cUsbctrls := (*[1<<28]C.libxl_device_usbctrl)(unsafe.Pointer(xc.usbctrls))[:numUsbctrls:numUsbctrls]
3042for i,v := range x.Usbctrls {
3043if err := v.toC(&cUsbctrls[i]); err != nil {
3044return fmt.Errorf("converting field Usbctrls: %v", err)
3045}
3046}
3047}
3048if numUsbdevs := len(x.Usbdevs); numUsbdevs > 0 {
3049xc.usbdevs = (*C.libxl_device_usbdev)(C.malloc(C.ulong(numUsbdevs)*C.sizeof_libxl_device_usbdev))
3050xc.num_usbdevs = C.int(numUsbdevs)
3051cUsbdevs := (*[1<<28]C.libxl_device_usbdev)(unsafe.Pointer(xc.usbdevs))[:numUsbdevs:numUsbdevs]
3052for i,v := range x.Usbdevs {
3053if err := v.toC(&cUsbdevs[i]); err != nil {
3054return fmt.Errorf("converting field Usbdevs: %v", err)
3055}
3056}
3057}
3058xc.on_poweroff = C.libxl_action_on_shutdown(x.OnPoweroff)
3059xc.on_reboot = C.libxl_action_on_shutdown(x.OnReboot)
3060xc.on_watchdog = C.libxl_action_on_shutdown(x.OnWatchdog)
3061xc.on_crash = C.libxl_action_on_shutdown(x.OnCrash)
3062xc.on_soft_reset = C.libxl_action_on_shutdown(x.OnSoftReset)
3063
3064 return nil
3065 }
3066
3067// NewDiskinfo returns an instance of Diskinfo initialized with defaults.
3068func NewDiskinfo() (*Diskinfo, error) {
3069var (
3070x Diskinfo
3071xc C.libxl_diskinfo)
3072
3073C.libxl_diskinfo_init(&xc)
3074defer C.libxl_diskinfo_dispose(&xc)
3075
3076if err := x.fromC(&xc); err != nil {
3077return nil, err }
3078
3079return &x, nil}
3080
3081func (x *Diskinfo) fromC(xc *C.libxl_diskinfo) error {
3082 x.Backend = C.GoString(xc.backend)
3083x.BackendId = uint32(xc.backend_id)
3084x.Frontend = C.GoString(xc.frontend)
3085x.FrontendId = uint32(xc.frontend_id)
3086x.Devid = Devid(xc.devid)
3087x.State = int(xc.state)
3088x.Evtch = int(xc.evtch)
3089x.Rref = int(xc.rref)
3090
3091 return nil}
3092
3093func (x *Diskinfo) toC(xc *C.libxl_diskinfo) (err error){defer func(){
3094if err != nil{
3095C.libxl_diskinfo_dispose(xc)}
3096}()
3097
3098if x.Backend != "" {
3099xc.backend = C.CString(x.Backend)}
3100xc.backend_id = C.uint32_t(x.BackendId)
3101if x.Frontend != "" {
3102xc.frontend = C.CString(x.Frontend)}
3103xc.frontend_id = C.uint32_t(x.FrontendId)
3104xc.devid = C.libxl_devid(x.Devid)
3105xc.state = C.int(x.State)
3106xc.evtch = C.int(x.Evtch)
3107xc.rref = C.int(x.Rref)
3108
3109 return nil
3110 }
3111
3112// NewNicinfo returns an instance of Nicinfo initialized with defaults.
3113func NewNicinfo() (*Nicinfo, error) {
3114var (
3115x Nicinfo
3116xc C.libxl_nicinfo)
3117
3118C.libxl_nicinfo_init(&xc)
3119defer C.libxl_nicinfo_dispose(&xc)
3120
3121if err := x.fromC(&xc); err != nil {
3122return nil, err }
3123
3124return &x, nil}
3125
3126func (x *Nicinfo) fromC(xc *C.libxl_nicinfo) error {
3127 x.Backend = C.GoString(xc.backend)
3128x.BackendId = uint32(xc.backend_id)
3129x.Frontend = C.GoString(xc.frontend)
3130x.FrontendId = uint32(xc.frontend_id)
3131x.Devid = Devid(xc.devid)
3132x.State = int(xc.state)
3133x.Evtch = int(xc.evtch)
3134x.RrefTx = int(xc.rref_tx)
3135x.RrefRx = int(xc.rref_rx)
3136
3137 return nil}
3138
3139func (x *Nicinfo) toC(xc *C.libxl_nicinfo) (err error){defer func(){
3140if err != nil{
3141C.libxl_nicinfo_dispose(xc)}
3142}()
3143
3144if x.Backend != "" {
3145xc.backend = C.CString(x.Backend)}
3146xc.backend_id = C.uint32_t(x.BackendId)
3147if x.Frontend != "" {
3148xc.frontend = C.CString(x.Frontend)}
3149xc.frontend_id = C.uint32_t(x.FrontendId)
3150xc.devid = C.libxl_devid(x.Devid)
3151xc.state = C.int(x.State)
3152xc.evtch = C.int(x.Evtch)
3153xc.rref_tx = C.int(x.RrefTx)
3154xc.rref_rx = C.int(x.RrefRx)
3155
3156 return nil
3157 }
3158
3159// NewVtpminfo returns an instance of Vtpminfo initialized with defaults.
3160func NewVtpminfo() (*Vtpminfo, error) {
3161var (
3162x Vtpminfo
3163xc C.libxl_vtpminfo)
3164
3165C.libxl_vtpminfo_init(&xc)
3166defer C.libxl_vtpminfo_dispose(&xc)
3167
3168if err := x.fromC(&xc); err != nil {
3169return nil, err }
3170
3171return &x, nil}
3172
3173func (x *Vtpminfo) fromC(xc *C.libxl_vtpminfo) error {
3174 x.Backend = C.GoString(xc.backend)
3175x.BackendId = uint32(xc.backend_id)
3176x.Frontend = C.GoString(xc.frontend)
3177x.FrontendId = uint32(xc.frontend_id)
3178x.Devid = Devid(xc.devid)
3179x.State = int(xc.state)
3180x.Evtch = int(xc.evtch)
3181x.Rref = int(xc.rref)
3182if err := x.Uuid.fromC(&xc.uuid);err != nil {
3183return fmt.Errorf("converting field Uuid: %v", err)
3184}
3185
3186 return nil}
3187
3188func (x *Vtpminfo) toC(xc *C.libxl_vtpminfo) (err error){defer func(){
3189if err != nil{
3190C.libxl_vtpminfo_dispose(xc)}
3191}()
3192
3193if x.Backend != "" {
3194xc.backend = C.CString(x.Backend)}
3195xc.backend_id = C.uint32_t(x.BackendId)
3196if x.Frontend != "" {
3197xc.frontend = C.CString(x.Frontend)}
3198xc.frontend_id = C.uint32_t(x.FrontendId)
3199xc.devid = C.libxl_devid(x.Devid)
3200xc.state = C.int(x.State)
3201xc.evtch = C.int(x.Evtch)
3202xc.rref = C.int(x.Rref)
3203if err := x.Uuid.toC(&xc.uuid); err != nil {
3204return fmt.Errorf("converting field Uuid: %v", err)
3205}
3206
3207 return nil
3208 }
3209
3210// NewUsbctrlinfo returns an instance of Usbctrlinfo initialized with defaults.
3211func NewUsbctrlinfo() (*Usbctrlinfo, error) {
3212var (
3213x Usbctrlinfo
3214xc C.libxl_usbctrlinfo)
3215
3216C.libxl_usbctrlinfo_init(&xc)
3217defer C.libxl_usbctrlinfo_dispose(&xc)
3218
3219if err := x.fromC(&xc); err != nil {
3220return nil, err }
3221
3222return &x, nil}
3223
3224func (x *Usbctrlinfo) fromC(xc *C.libxl_usbctrlinfo) error {
3225 x.Type = UsbctrlType(xc._type)
3226x.Devid = Devid(xc.devid)
3227x.Version = int(xc.version)
3228x.Ports = int(xc.ports)
3229x.Backend = C.GoString(xc.backend)
3230x.BackendId = uint32(xc.backend_id)
3231x.Frontend = C.GoString(xc.frontend)
3232x.FrontendId = uint32(xc.frontend_id)
3233x.State = int(xc.state)
3234x.Evtch = int(xc.evtch)
3235x.RefUrb = int(xc.ref_urb)
3236x.RefConn = int(xc.ref_conn)
3237
3238 return nil}
3239
3240func (x *Usbctrlinfo) toC(xc *C.libxl_usbctrlinfo) (err error){defer func(){
3241if err != nil{
3242C.libxl_usbctrlinfo_dispose(xc)}
3243}()
3244
3245xc._type = C.libxl_usbctrl_type(x.Type)
3246xc.devid = C.libxl_devid(x.Devid)
3247xc.version = C.int(x.Version)
3248xc.ports = C.int(x.Ports)
3249if x.Backend != "" {
3250xc.backend = C.CString(x.Backend)}
3251xc.backend_id = C.uint32_t(x.BackendId)
3252if x.Frontend != "" {
3253xc.frontend = C.CString(x.Frontend)}
3254xc.frontend_id = C.uint32_t(x.FrontendId)
3255xc.state = C.int(x.State)
3256xc.evtch = C.int(x.Evtch)
3257xc.ref_urb = C.int(x.RefUrb)
3258xc.ref_conn = C.int(x.RefConn)
3259
3260 return nil
3261 }
3262
3263// NewVcpuinfo returns an instance of Vcpuinfo initialized with defaults.
3264func NewVcpuinfo() (*Vcpuinfo, error) {
3265var (
3266x Vcpuinfo
3267xc C.libxl_vcpuinfo)
3268
3269C.libxl_vcpuinfo_init(&xc)
3270defer C.libxl_vcpuinfo_dispose(&xc)
3271
3272if err := x.fromC(&xc); err != nil {
3273return nil, err }
3274
3275return &x, nil}
3276
3277func (x *Vcpuinfo) fromC(xc *C.libxl_vcpuinfo) error {
3278 x.Vcpuid = uint32(xc.vcpuid)
3279x.Cpu = uint32(xc.cpu)
3280x.Online = bool(xc.online)
3281x.Blocked = bool(xc.blocked)
3282x.Running = bool(xc.running)
3283x.VcpuTime = uint64(xc.vcpu_time)
3284if err := x.Cpumap.fromC(&xc.cpumap);err != nil {
3285return fmt.Errorf("converting field Cpumap: %v", err)
3286}
3287if err := x.CpumapSoft.fromC(&xc.cpumap_soft);err != nil {
3288return fmt.Errorf("converting field CpumapSoft: %v", err)
3289}
3290
3291 return nil}
3292
3293func (x *Vcpuinfo) toC(xc *C.libxl_vcpuinfo) (err error){defer func(){
3294if err != nil{
3295C.libxl_vcpuinfo_dispose(xc)}
3296}()
3297
3298xc.vcpuid = C.uint32_t(x.Vcpuid)
3299xc.cpu = C.uint32_t(x.Cpu)
3300xc.online = C.bool(x.Online)
3301xc.blocked = C.bool(x.Blocked)
3302xc.running = C.bool(x.Running)
3303xc.vcpu_time = C.uint64_t(x.VcpuTime)
3304if err := x.Cpumap.toC(&xc.cpumap); err != nil {
3305return fmt.Errorf("converting field Cpumap: %v", err)
3306}
3307if err := x.CpumapSoft.toC(&xc.cpumap_soft); err != nil {
3308return fmt.Errorf("converting field CpumapSoft: %v", err)
3309}
3310
3311 return nil
3312 }
3313
3314// NewPhysinfo returns an instance of Physinfo initialized with defaults.
3315func NewPhysinfo() (*Physinfo, error) {
3316var (
3317x Physinfo
3318xc C.libxl_physinfo)
3319
3320C.libxl_physinfo_init(&xc)
3321defer C.libxl_physinfo_dispose(&xc)
3322
3323if err := x.fromC(&xc); err != nil {
3324return nil, err }
3325
3326return &x, nil}
3327
3328func (x *Physinfo) fromC(xc *C.libxl_physinfo) error {
3329 x.ThreadsPerCore = uint32(xc.threads_per_core)
3330x.CoresPerSocket = uint32(xc.cores_per_socket)
3331x.MaxCpuId = uint32(xc.max_cpu_id)
3332x.NrCpus = uint32(xc.nr_cpus)
3333x.CpuKhz = uint32(xc.cpu_khz)
3334x.TotalPages = uint64(xc.total_pages)
3335x.FreePages = uint64(xc.free_pages)
3336x.ScrubPages = uint64(xc.scrub_pages)
3337x.OutstandingPages = uint64(xc.outstanding_pages)
3338x.SharingFreedPages = uint64(xc.sharing_freed_pages)
3339x.SharingUsedFrames = uint64(xc.sharing_used_frames)
3340x.MaxPossibleMfn = uint64(xc.max_possible_mfn)
3341x.NrNodes = uint32(xc.nr_nodes)
3342if err := x.HwCap.fromC(&xc.hw_cap);err != nil {
3343return fmt.Errorf("converting field HwCap: %v", err)
3344}
3345x.CapHvm = bool(xc.cap_hvm)
3346x.CapPv = bool(xc.cap_pv)
3347x.CapHvmDirectio = bool(xc.cap_hvm_directio)
3348x.CapHap = bool(xc.cap_hap)
3349x.CapShadow = bool(xc.cap_shadow)
3350x.CapIommuHapPtShare = bool(xc.cap_iommu_hap_pt_share)
3351
3352 return nil}
3353
3354func (x *Physinfo) toC(xc *C.libxl_physinfo) (err error){defer func(){
3355if err != nil{
3356C.libxl_physinfo_dispose(xc)}
3357}()
3358
3359xc.threads_per_core = C.uint32_t(x.ThreadsPerCore)
3360xc.cores_per_socket = C.uint32_t(x.CoresPerSocket)
3361xc.max_cpu_id = C.uint32_t(x.MaxCpuId)
3362xc.nr_cpus = C.uint32_t(x.NrCpus)
3363xc.cpu_khz = C.uint32_t(x.CpuKhz)
3364xc.total_pages = C.uint64_t(x.TotalPages)
3365xc.free_pages = C.uint64_t(x.FreePages)
3366xc.scrub_pages = C.uint64_t(x.ScrubPages)
3367xc.outstanding_pages = C.uint64_t(x.OutstandingPages)
3368xc.sharing_freed_pages = C.uint64_t(x.SharingFreedPages)
3369xc.sharing_used_frames = C.uint64_t(x.SharingUsedFrames)
3370xc.max_possible_mfn = C.uint64_t(x.MaxPossibleMfn)
3371xc.nr_nodes = C.uint32_t(x.NrNodes)
3372if err := x.HwCap.toC(&xc.hw_cap); err != nil {
3373return fmt.Errorf("converting field HwCap: %v", err)
3374}
3375xc.cap_hvm = C.bool(x.CapHvm)
3376xc.cap_pv = C.bool(x.CapPv)
3377xc.cap_hvm_directio = C.bool(x.CapHvmDirectio)
3378xc.cap_hap = C.bool(x.CapHap)
3379xc.cap_shadow = C.bool(x.CapShadow)
3380xc.cap_iommu_hap_pt_share = C.bool(x.CapIommuHapPtShare)
3381
3382 return nil
3383 }
3384
3385// NewConnectorinfo returns an instance of Connectorinfo initialized with defaults.
3386func NewConnectorinfo() (*Connectorinfo, error) {
3387var (
3388x Connectorinfo
3389xc C.libxl_connectorinfo)
3390
3391C.libxl_connectorinfo_init(&xc)
3392defer C.libxl_connectorinfo_dispose(&xc)
3393
3394if err := x.fromC(&xc); err != nil {
3395return nil, err }
3396
3397return &x, nil}
3398
3399func (x *Connectorinfo) fromC(xc *C.libxl_connectorinfo) error {
3400 x.UniqueId = C.GoString(xc.unique_id)
3401x.Width = uint32(xc.width)
3402x.Height = uint32(xc.height)
3403x.ReqEvtch = int(xc.req_evtch)
3404x.ReqRref = int(xc.req_rref)
3405x.EvtEvtch = int(xc.evt_evtch)
3406x.EvtRref = int(xc.evt_rref)
3407
3408 return nil}
3409
3410func (x *Connectorinfo) toC(xc *C.libxl_connectorinfo) (err error){defer func(){
3411if err != nil{
3412C.libxl_connectorinfo_dispose(xc)}
3413}()
3414
3415if x.UniqueId != "" {
3416xc.unique_id = C.CString(x.UniqueId)}
3417xc.width = C.uint32_t(x.Width)
3418xc.height = C.uint32_t(x.Height)
3419xc.req_evtch = C.int(x.ReqEvtch)
3420xc.req_rref = C.int(x.ReqRref)
3421xc.evt_evtch = C.int(x.EvtEvtch)
3422xc.evt_rref = C.int(x.EvtRref)
3423
3424 return nil
3425 }
3426
3427// NewVdisplinfo returns an instance of Vdisplinfo initialized with defaults.
3428func NewVdisplinfo() (*Vdisplinfo, error) {
3429var (
3430x Vdisplinfo
3431xc C.libxl_vdisplinfo)
3432
3433C.libxl_vdisplinfo_init(&xc)
3434defer C.libxl_vdisplinfo_dispose(&xc)
3435
3436if err := x.fromC(&xc); err != nil {
3437return nil, err }
3438
3439return &x, nil}
3440
3441func (x *Vdisplinfo) fromC(xc *C.libxl_vdisplinfo) error {
3442 x.Backend = C.GoString(xc.backend)
3443x.BackendId = uint32(xc.backend_id)
3444x.Frontend = C.GoString(xc.frontend)
3445x.FrontendId = uint32(xc.frontend_id)
3446x.Devid = Devid(xc.devid)
3447x.State = int(xc.state)
3448x.BeAlloc = bool(xc.be_alloc)
3449x.Connectors = nil
3450if n := int(xc.num_connectors); n > 0 {
3451cConnectors := (*[1<<28]C.libxl_connectorinfo)(unsafe.Pointer(xc.connectors))[:n:n]
3452x.Connectors = make([]Connectorinfo, n)
3453for i, v := range cConnectors {
3454if err := x.Connectors[i].fromC(&v); err != nil {
3455return fmt.Errorf("converting field Connectors: %v", err) }
3456}
3457}
3458
3459 return nil}
3460
3461func (x *Vdisplinfo) toC(xc *C.libxl_vdisplinfo) (err error){defer func(){
3462if err != nil{
3463C.libxl_vdisplinfo_dispose(xc)}
3464}()
3465
3466if x.Backend != "" {
3467xc.backend = C.CString(x.Backend)}
3468xc.backend_id = C.uint32_t(x.BackendId)
3469if x.Frontend != "" {
3470xc.frontend = C.CString(x.Frontend)}
3471xc.frontend_id = C.uint32_t(x.FrontendId)
3472xc.devid = C.libxl_devid(x.Devid)
3473xc.state = C.int(x.State)
3474xc.be_alloc = C.bool(x.BeAlloc)
3475if numConnectors := len(x.Connectors); numConnectors > 0 {
3476xc.connectors = (*C.libxl_connectorinfo)(C.malloc(C.ulong(numConnectors)*C.sizeof_libxl_connectorinfo))
3477xc.num_connectors = C.int(numConnectors)
3478cConnectors := (*[1<<28]C.libxl_connectorinfo)(unsafe.Pointer(xc.connectors))[:numConnectors:numConnectors]
3479for i,v := range x.Connectors {
3480if err := v.toC(&cConnectors[i]); err != nil {
3481return fmt.Errorf("converting field Connectors: %v", err)
3482}
3483}
3484}
3485
3486 return nil
3487 }
3488
3489// NewStreaminfo returns an instance of Streaminfo initialized with defaults.
3490func NewStreaminfo() (*Streaminfo, error) {
3491var (
3492x Streaminfo
3493xc C.libxl_streaminfo)
3494
3495C.libxl_streaminfo_init(&xc)
3496defer C.libxl_streaminfo_dispose(&xc)
3497
3498if err := x.fromC(&xc); err != nil {
3499return nil, err }
3500
3501return &x, nil}
3502
3503func (x *Streaminfo) fromC(xc *C.libxl_streaminfo) error {
3504 x.ReqEvtch = int(xc.req_evtch)
3505x.ReqRref = int(xc.req_rref)
3506
3507 return nil}
3508
3509func (x *Streaminfo) toC(xc *C.libxl_streaminfo) (err error){defer func(){
3510if err != nil{
3511C.libxl_streaminfo_dispose(xc)}
3512}()
3513
3514xc.req_evtch = C.int(x.ReqEvtch)
3515xc.req_rref = C.int(x.ReqRref)
3516
3517 return nil
3518 }
3519
3520// NewPcminfo returns an instance of Pcminfo initialized with defaults.
3521func NewPcminfo() (*Pcminfo, error) {
3522var (
3523x Pcminfo
3524xc C.libxl_pcminfo)
3525
3526C.libxl_pcminfo_init(&xc)
3527defer C.libxl_pcminfo_dispose(&xc)
3528
3529if err := x.fromC(&xc); err != nil {
3530return nil, err }
3531
3532return &x, nil}
3533
3534func (x *Pcminfo) fromC(xc *C.libxl_pcminfo) error {
3535 x.Streams = nil
3536if n := int(xc.num_vsnd_streams); n > 0 {
3537cStreams := (*[1<<28]C.libxl_streaminfo)(unsafe.Pointer(xc.streams))[:n:n]
3538x.Streams = make([]Streaminfo, n)
3539for i, v := range cStreams {
3540if err := x.Streams[i].fromC(&v); err != nil {
3541return fmt.Errorf("converting field Streams: %v", err) }
3542}
3543}
3544
3545 return nil}
3546
3547func (x *Pcminfo) toC(xc *C.libxl_pcminfo) (err error){defer func(){
3548if err != nil{
3549C.libxl_pcminfo_dispose(xc)}
3550}()
3551
3552if numVsndStreams := len(x.Streams); numVsndStreams > 0 {
3553xc.streams = (*C.libxl_streaminfo)(C.malloc(C.ulong(numVsndStreams)*C.sizeof_libxl_streaminfo))
3554xc.num_vsnd_streams = C.int(numVsndStreams)
3555cStreams := (*[1<<28]C.libxl_streaminfo)(unsafe.Pointer(xc.streams))[:numVsndStreams:numVsndStreams]
3556for i,v := range x.Streams {
3557if err := v.toC(&cStreams[i]); err != nil {
3558return fmt.Errorf("converting field Streams: %v", err)
3559}
3560}
3561}
3562
3563 return nil
3564 }
3565
3566// NewVsndinfo returns an instance of Vsndinfo initialized with defaults.
3567func NewVsndinfo() (*Vsndinfo, error) {
3568var (
3569x Vsndinfo
3570xc C.libxl_vsndinfo)
3571
3572C.libxl_vsndinfo_init(&xc)
3573defer C.libxl_vsndinfo_dispose(&xc)
3574
3575if err := x.fromC(&xc); err != nil {
3576return nil, err }
3577
3578return &x, nil}
3579
3580func (x *Vsndinfo) fromC(xc *C.libxl_vsndinfo) error {
3581 x.Backend = C.GoString(xc.backend)
3582x.BackendId = uint32(xc.backend_id)
3583x.Frontend = C.GoString(xc.frontend)
3584x.FrontendId = uint32(xc.frontend_id)
3585x.Devid = Devid(xc.devid)
3586x.State = int(xc.state)
3587x.Pcms = nil
3588if n := int(xc.num_vsnd_pcms); n > 0 {
3589cPcms := (*[1<<28]C.libxl_pcminfo)(unsafe.Pointer(xc.pcms))[:n:n]
3590x.Pcms = make([]Pcminfo, n)
3591for i, v := range cPcms {
3592if err := x.Pcms[i].fromC(&v); err != nil {
3593return fmt.Errorf("converting field Pcms: %v", err) }
3594}
3595}
3596
3597 return nil}
3598
3599func (x *Vsndinfo) toC(xc *C.libxl_vsndinfo) (err error){defer func(){
3600if err != nil{
3601C.libxl_vsndinfo_dispose(xc)}
3602}()
3603
3604if x.Backend != "" {
3605xc.backend = C.CString(x.Backend)}
3606xc.backend_id = C.uint32_t(x.BackendId)
3607if x.Frontend != "" {
3608xc.frontend = C.CString(x.Frontend)}
3609xc.frontend_id = C.uint32_t(x.FrontendId)
3610xc.devid = C.libxl_devid(x.Devid)
3611xc.state = C.int(x.State)
3612if numVsndPcms := len(x.Pcms); numVsndPcms > 0 {
3613xc.pcms = (*C.libxl_pcminfo)(C.malloc(C.ulong(numVsndPcms)*C.sizeof_libxl_pcminfo))
3614xc.num_vsnd_pcms = C.int(numVsndPcms)
3615cPcms := (*[1<<28]C.libxl_pcminfo)(unsafe.Pointer(xc.pcms))[:numVsndPcms:numVsndPcms]
3616for i,v := range x.Pcms {
3617if err := v.toC(&cPcms[i]); err != nil {
3618return fmt.Errorf("converting field Pcms: %v", err)
3619}
3620}
3621}
3622
3623 return nil
3624 }
3625
3626// NewVkbinfo returns an instance of Vkbinfo initialized with defaults.
3627func NewVkbinfo() (*Vkbinfo, error) {
3628var (
3629x Vkbinfo
3630xc C.libxl_vkbinfo)
3631
3632C.libxl_vkbinfo_init(&xc)
3633defer C.libxl_vkbinfo_dispose(&xc)
3634
3635if err := x.fromC(&xc); err != nil {
3636return nil, err }
3637
3638return &x, nil}
3639
3640func (x *Vkbinfo) fromC(xc *C.libxl_vkbinfo) error {
3641 x.Backend = C.GoString(xc.backend)
3642x.BackendId = uint32(xc.backend_id)
3643x.Frontend = C.GoString(xc.frontend)
3644x.FrontendId = uint32(xc.frontend_id)
3645x.Devid = Devid(xc.devid)
3646x.State = int(xc.state)
3647x.Evtch = int(xc.evtch)
3648x.Rref = int(xc.rref)
3649
3650 return nil}
3651
3652func (x *Vkbinfo) toC(xc *C.libxl_vkbinfo) (err error){defer func(){
3653if err != nil{
3654C.libxl_vkbinfo_dispose(xc)}
3655}()
3656
3657if x.Backend != "" {
3658xc.backend = C.CString(x.Backend)}
3659xc.backend_id = C.uint32_t(x.BackendId)
3660if x.Frontend != "" {
3661xc.frontend = C.CString(x.Frontend)}
3662xc.frontend_id = C.uint32_t(x.FrontendId)
3663xc.devid = C.libxl_devid(x.Devid)
3664xc.state = C.int(x.State)
3665xc.evtch = C.int(x.Evtch)
3666xc.rref = C.int(x.Rref)
3667
3668 return nil
3669 }
3670
3671// NewNumainfo returns an instance of Numainfo initialized with defaults.
3672func NewNumainfo() (*Numainfo, error) {
3673var (
3674x Numainfo
3675xc C.libxl_numainfo)
3676
3677C.libxl_numainfo_init(&xc)
3678defer C.libxl_numainfo_dispose(&xc)
3679
3680if err := x.fromC(&xc); err != nil {
3681return nil, err }
3682
3683return &x, nil}
3684
3685func (x *Numainfo) fromC(xc *C.libxl_numainfo) error {
3686 x.Size = uint64(xc.size)
3687x.Free = uint64(xc.free)
3688x.Dists = nil
3689if n := int(xc.num_dists); n > 0 {
3690cDists := (*[1<<28]C.uint32_t)(unsafe.Pointer(xc.dists))[:n:n]
3691x.Dists = make([]uint32, n)
3692for i, v := range cDists {
3693x.Dists[i] = uint32(v)
3694}
3695}
3696
3697 return nil}
3698
3699func (x *Numainfo) toC(xc *C.libxl_numainfo) (err error){defer func(){
3700if err != nil{
3701C.libxl_numainfo_dispose(xc)}
3702}()
3703
3704xc.size = C.uint64_t(x.Size)
3705xc.free = C.uint64_t(x.Free)
3706if numDists := len(x.Dists); numDists > 0 {
3707xc.dists = (*C.uint32_t)(C.malloc(C.size_t(numDists*numDists)))
3708xc.num_dists = C.int(numDists)
3709cDists := (*[1<<28]C.uint32_t)(unsafe.Pointer(xc.dists))[:numDists:numDists]
3710for i,v := range x.Dists {
3711cDists[i] = C.uint32_t(v)
3712}
3713}
3714
3715 return nil
3716 }
3717
3718// NewCputopology returns an instance of Cputopology initialized with defaults.
3719func NewCputopology() (*Cputopology, error) {
3720var (
3721x Cputopology
3722xc C.libxl_cputopology)
3723
3724C.libxl_cputopology_init(&xc)
3725defer C.libxl_cputopology_dispose(&xc)
3726
3727if err := x.fromC(&xc); err != nil {
3728return nil, err }
3729
3730return &x, nil}
3731
3732func (x *Cputopology) fromC(xc *C.libxl_cputopology) error {
3733 x.Core = uint32(xc.core)
3734x.Socket = uint32(xc.socket)
3735x.Node = uint32(xc.node)
3736
3737 return nil}
3738
3739func (x *Cputopology) toC(xc *C.libxl_cputopology) (err error){defer func(){
3740if err != nil{
3741C.libxl_cputopology_dispose(xc)}
3742}()
3743
3744xc.core = C.uint32_t(x.Core)
3745xc.socket = C.uint32_t(x.Socket)
3746xc.node = C.uint32_t(x.Node)
3747
3748 return nil
3749 }
3750
3751// NewPcitopology returns an instance of Pcitopology initialized with defaults.
3752func NewPcitopology() (*Pcitopology, error) {
3753var (
3754x Pcitopology
3755xc C.libxl_pcitopology)
3756
3757C.libxl_pcitopology_init(&xc)
3758defer C.libxl_pcitopology_dispose(&xc)
3759
3760if err := x.fromC(&xc); err != nil {
3761return nil, err }
3762
3763return &x, nil}
3764
3765func (x *Pcitopology) fromC(xc *C.libxl_pcitopology) error {
3766 x.Seg = uint16(xc.seg)
3767x.Bus = byte(xc.bus)
3768x.Devfn = byte(xc.devfn)
3769x.Node = uint32(xc.node)
3770
3771 return nil}
3772
3773func (x *Pcitopology) toC(xc *C.libxl_pcitopology) (err error){defer func(){
3774if err != nil{
3775C.libxl_pcitopology_dispose(xc)}
3776}()
3777
3778xc.seg = C.uint16_t(x.Seg)
3779xc.bus = C.uint8_t(x.Bus)
3780xc.devfn = C.uint8_t(x.Devfn)
3781xc.node = C.uint32_t(x.Node)
3782
3783 return nil
3784 }
3785
3786// NewSchedCreditParams returns an instance of SchedCreditParams initialized with defaults.
3787func NewSchedCreditParams() (*SchedCreditParams, error) {
3788var (
3789x SchedCreditParams
3790xc C.libxl_sched_credit_params)
3791
3792C.libxl_sched_credit_params_init(&xc)
3793
3794if err := x.fromC(&xc); err != nil {
3795return nil, err }
3796
3797return &x, nil}
3798
3799func (x *SchedCreditParams) fromC(xc *C.libxl_sched_credit_params) error {
3800 x.TsliceMs = int(xc.tslice_ms)
3801x.RatelimitUs = int(xc.ratelimit_us)
3802x.VcpuMigrDelayUs = int(xc.vcpu_migr_delay_us)
3803
3804 return nil}
3805
3806func (x *SchedCreditParams) toC(xc *C.libxl_sched_credit_params) (err error){xc.tslice_ms = C.int(x.TsliceMs)
3807xc.ratelimit_us = C.int(x.RatelimitUs)
3808xc.vcpu_migr_delay_us = C.int(x.VcpuMigrDelayUs)
3809
3810 return nil
3811 }
3812
3813// NewSchedCredit2Params returns an instance of SchedCredit2Params initialized with defaults.
3814func NewSchedCredit2Params() (*SchedCredit2Params, error) {
3815var (
3816x SchedCredit2Params
3817xc C.libxl_sched_credit2_params)
3818
3819C.libxl_sched_credit2_params_init(&xc)
3820
3821if err := x.fromC(&xc); err != nil {
3822return nil, err }
3823
3824return &x, nil}
3825
3826func (x *SchedCredit2Params) fromC(xc *C.libxl_sched_credit2_params) error {
3827 x.RatelimitUs = int(xc.ratelimit_us)
3828
3829 return nil}
3830
3831func (x *SchedCredit2Params) toC(xc *C.libxl_sched_credit2_params) (err error){xc.ratelimit_us = C.int(x.RatelimitUs)
3832
3833 return nil
3834 }
3835
3836// NewDomainRemusInfo returns an instance of DomainRemusInfo initialized with defaults.
3837func NewDomainRemusInfo() (*DomainRemusInfo, error) {
3838var (
3839x DomainRemusInfo
3840xc C.libxl_domain_remus_info)
3841
3842C.libxl_domain_remus_info_init(&xc)
3843defer C.libxl_domain_remus_info_dispose(&xc)
3844
3845if err := x.fromC(&xc); err != nil {
3846return nil, err }
3847
3848return &x, nil}
3849
3850func (x *DomainRemusInfo) fromC(xc *C.libxl_domain_remus_info) error {
3851 x.Interval = int(xc.interval)
3852if err := x.AllowUnsafe.fromC(&xc.allow_unsafe);err != nil {
3853return fmt.Errorf("converting field AllowUnsafe: %v", err)
3854}
3855if err := x.Blackhole.fromC(&xc.blackhole);err != nil {
3856return fmt.Errorf("converting field Blackhole: %v", err)
3857}
3858if err := x.Compression.fromC(&xc.compression);err != nil {
3859return fmt.Errorf("converting field Compression: %v", err)
3860}
3861if err := x.Netbuf.fromC(&xc.netbuf);err != nil {
3862return fmt.Errorf("converting field Netbuf: %v", err)
3863}
3864x.Netbufscript = C.GoString(xc.netbufscript)
3865if err := x.Diskbuf.fromC(&xc.diskbuf);err != nil {
3866return fmt.Errorf("converting field Diskbuf: %v", err)
3867}
3868if err := x.Colo.fromC(&xc.colo);err != nil {
3869return fmt.Errorf("converting field Colo: %v", err)
3870}
3871if err := x.UserspaceColoProxy.fromC(&xc.userspace_colo_proxy);err != nil {
3872return fmt.Errorf("converting field UserspaceColoProxy: %v", err)
3873}
3874
3875 return nil}
3876
3877func (x *DomainRemusInfo) toC(xc *C.libxl_domain_remus_info) (err error){defer func(){
3878if err != nil{
3879C.libxl_domain_remus_info_dispose(xc)}
3880}()
3881
3882xc.interval = C.int(x.Interval)
3883if err := x.AllowUnsafe.toC(&xc.allow_unsafe); err != nil {
3884return fmt.Errorf("converting field AllowUnsafe: %v", err)
3885}
3886if err := x.Blackhole.toC(&xc.blackhole); err != nil {
3887return fmt.Errorf("converting field Blackhole: %v", err)
3888}
3889if err := x.Compression.toC(&xc.compression); err != nil {
3890return fmt.Errorf("converting field Compression: %v", err)
3891}
3892if err := x.Netbuf.toC(&xc.netbuf); err != nil {
3893return fmt.Errorf("converting field Netbuf: %v", err)
3894}
3895if x.Netbufscript != "" {
3896xc.netbufscript = C.CString(x.Netbufscript)}
3897if err := x.Diskbuf.toC(&xc.diskbuf); err != nil {
3898return fmt.Errorf("converting field Diskbuf: %v", err)
3899}
3900if err := x.Colo.toC(&xc.colo); err != nil {
3901return fmt.Errorf("converting field Colo: %v", err)
3902}
3903if err := x.UserspaceColoProxy.toC(&xc.userspace_colo_proxy); err != nil {
3904return fmt.Errorf("converting field UserspaceColoProxy: %v", err)
3905}
3906
3907 return nil
3908 }
3909
3910// NewEvent returns an instance of Event initialized with defaults.
3911func NewEvent(etype EventType) (*Event, error) {
3912var (
3913x Event
3914xc C.libxl_event)
3915
3916C.libxl_event_init(&xc)
3917C.libxl_event_init_type(&xc, C.libxl_event_type(etype))
3918defer C.libxl_event_dispose(&xc)
3919
3920if err := x.fromC(&xc); err != nil {
3921return nil, err }
3922
3923return &x, nil}
3924
3925func (x *Event) fromC(xc *C.libxl_event) error {
3926 if err := x.Link.fromC(&xc.link);err != nil {
3927return fmt.Errorf("converting field Link: %v", err)
3928}
3929x.Domid = Domid(xc.domid)
3930if err := x.Domuuid.fromC(&xc.domuuid);err != nil {
3931return fmt.Errorf("converting field Domuuid: %v", err)
3932}
3933x.ForUser = uint64(xc.for_user)
3934x.Type = EventType(xc._type)
3935switch x.Type{
3936case EventTypeDiskEject:
3937var typeDiskEject EventTypeUnionDiskEject
3938if err := typeDiskEject.fromC(xc);err != nil {
3939 return fmt.Errorf("converting field typeDiskEject: %v", err)
3940}
3941x.TypeUnion = typeDiskEject
3942case EventTypeDomainCreateConsoleAvailable:
3943x.TypeUnion = nil
3944case EventTypeDomainDeath:
3945x.TypeUnion = nil
3946case EventTypeDomainShutdown:
3947var typeDomainShutdown EventTypeUnionDomainShutdown
3948if err := typeDomainShutdown.fromC(xc);err != nil {
3949 return fmt.Errorf("converting field typeDomainShutdown: %v", err)
3950}
3951x.TypeUnion = typeDomainShutdown
3952case EventTypeOperationComplete:
3953var typeOperationComplete EventTypeUnionOperationComplete
3954if err := typeOperationComplete.fromC(xc);err != nil {
3955 return fmt.Errorf("converting field typeOperationComplete: %v", err)
3956}
3957x.TypeUnion = typeOperationComplete
3958default:
3959return fmt.Errorf("invalid union key '%v'", x.Type)}
3960
3961 return nil}
3962
3963func (x *EventTypeUnionDomainShutdown) fromC(xc *C.libxl_event) error {
3964if EventType(xc._type) != EventTypeDomainShutdown {
3965return errors.New("expected union key EventTypeDomainShutdown")
3966}
3967
3968tmp := (*C.libxl_event_type_union_domain_shutdown)(unsafe.Pointer(&xc.u[0]))
3969x.ShutdownReason = byte(tmp.shutdown_reason)
3970return nil
3971}
3972
3973func (x *EventTypeUnionDiskEject) fromC(xc *C.libxl_event) error {
3974if EventType(xc._type) != EventTypeDiskEject {
3975return errors.New("expected union key EventTypeDiskEject")
3976}
3977
3978tmp := (*C.libxl_event_type_union_disk_eject)(unsafe.Pointer(&xc.u[0]))
3979x.Vdev = C.GoString(tmp.vdev)
3980if err := x.Disk.fromC(&tmp.disk);err != nil {
3981return fmt.Errorf("converting field Disk: %v", err)
3982}
3983return nil
3984}
3985
3986func (x *EventTypeUnionOperationComplete) fromC(xc *C.libxl_event) error {
3987if EventType(xc._type) != EventTypeOperationComplete {
3988return errors.New("expected union key EventTypeOperationComplete")
3989}
3990
3991tmp := (*C.libxl_event_type_union_operation_complete)(unsafe.Pointer(&xc.u[0]))
3992x.Rc = int(tmp.rc)
3993return nil
3994}
3995
3996func (x *Event) toC(xc *C.libxl_event) (err error){defer func(){
3997if err != nil{
3998C.libxl_event_dispose(xc)}
3999}()
4000
4001if err := x.Link.toC(&xc.link); err != nil {
4002return fmt.Errorf("converting field Link: %v", err)
4003}
4004xc.domid = C.libxl_domid(x.Domid)
4005if err := x.Domuuid.toC(&xc.domuuid); err != nil {
4006return fmt.Errorf("converting field Domuuid: %v", err)
4007}
4008xc.for_user = C.uint64_t(x.ForUser)
4009xc._type = C.libxl_event_type(x.Type)
4010switch x.Type{
4011case EventTypeDomainShutdown:
4012tmp, ok := x.TypeUnion.(EventTypeUnionDomainShutdown)
4013if !ok {
4014return errors.New("wrong type for union key type")
4015}
4016var domain_shutdown C.libxl_event_type_union_domain_shutdown
4017domain_shutdown.shutdown_reason = C.uint8_t(tmp.ShutdownReason)
4018domain_shutdownBytes := C.GoBytes(unsafe.Pointer(&domain_shutdown),C.sizeof_libxl_event_type_union_domain_shutdown)
4019copy(xc.u[:],domain_shutdownBytes)
4020case EventTypeDomainDeath:
4021break
4022case EventTypeDiskEject:
4023tmp, ok := x.TypeUnion.(EventTypeUnionDiskEject)
4024if !ok {
4025return errors.New("wrong type for union key type")
4026}
4027var disk_eject C.libxl_event_type_union_disk_eject
4028if tmp.Vdev != "" {
4029disk_eject.vdev = C.CString(tmp.Vdev)}
4030if err := tmp.Disk.toC(&disk_eject.disk); err != nil {
4031return fmt.Errorf("converting field Disk: %v", err)
4032}
4033disk_ejectBytes := C.GoBytes(unsafe.Pointer(&disk_eject),C.sizeof_libxl_event_type_union_disk_eject)
4034copy(xc.u[:],disk_ejectBytes)
4035case EventTypeOperationComplete:
4036tmp, ok := x.TypeUnion.(EventTypeUnionOperationComplete)
4037if !ok {
4038return errors.New("wrong type for union key type")
4039}
4040var operation_complete C.libxl_event_type_union_operation_complete
4041operation_complete.rc = C.int(tmp.Rc)
4042operation_completeBytes := C.GoBytes(unsafe.Pointer(&operation_complete),C.sizeof_libxl_event_type_union_operation_complete)
4043copy(xc.u[:],operation_completeBytes)
4044case EventTypeDomainCreateConsoleAvailable:
4045break
4046default:
4047return fmt.Errorf("invalid union key '%v'", x.Type)}
4048
4049 return nil
4050 }
4051
4052// NewPsrCatInfo returns an instance of PsrCatInfo initialized with defaults.
4053func NewPsrCatInfo() (*PsrCatInfo, error) {
4054var (
4055x PsrCatInfo
4056xc C.libxl_psr_cat_info)
4057
4058C.libxl_psr_cat_info_init(&xc)
4059defer C.libxl_psr_cat_info_dispose(&xc)
4060
4061if err := x.fromC(&xc); err != nil {
4062return nil, err }
4063
4064return &x, nil}
4065
4066func (x *PsrCatInfo) fromC(xc *C.libxl_psr_cat_info) error {
4067 x.Id = uint32(xc.id)
4068x.CosMax = uint32(xc.cos_max)
4069x.CbmLen = uint32(xc.cbm_len)
4070x.CdpEnabled = bool(xc.cdp_enabled)
4071
4072 return nil}
4073
4074func (x *PsrCatInfo) toC(xc *C.libxl_psr_cat_info) (err error){defer func(){
4075if err != nil{
4076C.libxl_psr_cat_info_dispose(xc)}
4077}()
4078
4079xc.id = C.uint32_t(x.Id)
4080xc.cos_max = C.uint32_t(x.CosMax)
4081xc.cbm_len = C.uint32_t(x.CbmLen)
4082xc.cdp_enabled = C.bool(x.CdpEnabled)
4083
4084 return nil
4085 }
4086
4087// NewPsrHwInfo returns an instance of PsrHwInfo initialized with defaults.
4088func NewPsrHwInfo(ptype PsrFeatType) (*PsrHwInfo, error) {
4089var (
4090x PsrHwInfo
4091xc C.libxl_psr_hw_info)
4092
4093C.libxl_psr_hw_info_init(&xc)
4094C.libxl_psr_hw_info_init_type(&xc, C.libxl_psr_feat_type(ptype))
4095defer C.libxl_psr_hw_info_dispose(&xc)
4096
4097if err := x.fromC(&xc); err != nil {
4098return nil, err }
4099
4100return &x, nil}
4101
4102func (x *PsrHwInfo) fromC(xc *C.libxl_psr_hw_info) error {
4103 x.Id = uint32(xc.id)
4104x.Type = PsrFeatType(xc._type)
4105switch x.Type{
4106case PsrFeatTypeCat:
4107var typeCat PsrHwInfoTypeUnionCat
4108if err := typeCat.fromC(xc);err != nil {
4109 return fmt.Errorf("converting field typeCat: %v", err)
4110}
4111x.TypeUnion = typeCat
4112case PsrFeatTypeMba:
4113var typeMba PsrHwInfoTypeUnionMba
4114if err := typeMba.fromC(xc);err != nil {
4115 return fmt.Errorf("converting field typeMba: %v", err)
4116}
4117x.TypeUnion = typeMba
4118default:
4119return fmt.Errorf("invalid union key '%v'", x.Type)}
4120
4121 return nil}
4122
4123func (x *PsrHwInfoTypeUnionCat) fromC(xc *C.libxl_psr_hw_info) error {
4124if PsrFeatType(xc._type) != PsrFeatTypeCat {
4125return errors.New("expected union key PsrFeatTypeCat")
4126}
4127
4128tmp := (*C.libxl_psr_hw_info_type_union_cat)(unsafe.Pointer(&xc.u[0]))
4129x.CosMax = uint32(tmp.cos_max)
4130x.CbmLen = uint32(tmp.cbm_len)
4131x.CdpEnabled = bool(tmp.cdp_enabled)
4132return nil
4133}
4134
4135func (x *PsrHwInfoTypeUnionMba) fromC(xc *C.libxl_psr_hw_info) error {
4136if PsrFeatType(xc._type) != PsrFeatTypeMba {
4137return errors.New("expected union key PsrFeatTypeMba")
4138}
4139
4140tmp := (*C.libxl_psr_hw_info_type_union_mba)(unsafe.Pointer(&xc.u[0]))
4141x.CosMax = uint32(tmp.cos_max)
4142x.ThrtlMax = uint32(tmp.thrtl_max)
4143x.Linear = bool(tmp.linear)
4144return nil
4145}
4146
4147func (x *PsrHwInfo) toC(xc *C.libxl_psr_hw_info) (err error){defer func(){
4148if err != nil{
4149C.libxl_psr_hw_info_dispose(xc)}
4150}()
4151
4152xc.id = C.uint32_t(x.Id)
4153xc._type = C.libxl_psr_feat_type(x.Type)
4154switch x.Type{
4155case PsrFeatTypeCat:
4156tmp, ok := x.TypeUnion.(PsrHwInfoTypeUnionCat)
4157if !ok {
4158return errors.New("wrong type for union key type")
4159}
4160var cat C.libxl_psr_hw_info_type_union_cat
4161cat.cos_max = C.uint32_t(tmp.CosMax)
4162cat.cbm_len = C.uint32_t(tmp.CbmLen)
4163cat.cdp_enabled = C.bool(tmp.CdpEnabled)
4164catBytes := C.GoBytes(unsafe.Pointer(&cat),C.sizeof_libxl_psr_hw_info_type_union_cat)
4165copy(xc.u[:],catBytes)
4166case PsrFeatTypeMba:
4167tmp, ok := x.TypeUnion.(PsrHwInfoTypeUnionMba)
4168if !ok {
4169return errors.New("wrong type for union key type")
4170}
4171var mba C.libxl_psr_hw_info_type_union_mba
4172mba.cos_max = C.uint32_t(tmp.CosMax)
4173mba.thrtl_max = C.uint32_t(tmp.ThrtlMax)
4174mba.linear = C.bool(tmp.Linear)
4175mbaBytes := C.GoBytes(unsafe.Pointer(&mba),C.sizeof_libxl_psr_hw_info_type_union_mba)
4176copy(xc.u[:],mbaBytes)
4177default:
4178return fmt.Errorf("invalid union key '%v'", x.Type)}
4179
4180 return nil
4181 }
4182
4183