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