1# -*- python -*- 2# 3# Builtin libxl types 4# 5 6namespace("libxl_") 7 8libxl_defbool = Builtin("defbool", json_parse_type="JSON_STRING", passby=PASS_BY_REFERENCE, copy_fn=None, 9 check_default_fn="libxl__defbool_is_default") 10libxl_domid = Builtin("domid", json_gen_fn = "yajl_gen_integer", json_parse_fn = "libxl__uint32_parse_json", 11 json_parse_type = "JSON_INTEGER", autogenerate_json = False, copy_fn=None) 12libxl_devid = Builtin("devid", json_gen_fn = "yajl_gen_integer", json_parse_fn = "libxl__int_parse_json", 13 json_parse_type = "JSON_INTEGER", autogenerate_json = False, signed = True, init_val="-1", 14 copy_fn=None) 15libxl_uuid = Builtin("uuid", json_parse_type="JSON_STRING", passby=PASS_BY_REFERENCE, check_default_fn="libxl_uuid_is_nil", 16 copy_fn="libxl_uuid_copy") 17libxl_mac = Builtin("mac", json_parse_type="JSON_STRING", passby=PASS_BY_REFERENCE, check_default_fn="libxl__mac_is_default", 18 copy_fn="libxl_mac_copy") 19libxl_bitmap = Builtin("bitmap", json_parse_type="JSON_ARRAY", dispose_fn="libxl_bitmap_dispose", passby=PASS_BY_REFERENCE, 20 check_default_fn="libxl_bitmap_is_empty", copy_fn="libxl_bitmap_copy_alloc") 21libxl_cpuid_policy_list = Builtin("cpuid_policy_list", dispose_fn="libxl_cpuid_dispose", passby=PASS_BY_REFERENCE, 22 json_parse_type="JSON_ARRAY", check_default_fn="libxl__cpuid_policy_is_empty", 23 copy_fn="libxl_cpuid_policy_list_copy") 24 25libxl_string_list = Builtin("string_list", dispose_fn="libxl_string_list_dispose", passby=PASS_BY_REFERENCE, 26 json_parse_type="JSON_ARRAY", check_default_fn="libxl__string_list_is_empty", 27 copy_fn="libxl_string_list_copy") 28libxl_key_value_list = Builtin("key_value_list", dispose_fn="libxl_key_value_list_dispose", passby=PASS_BY_REFERENCE, 29 json_parse_type="JSON_MAP", check_default_fn="libxl__key_value_list_is_empty", 30 copy_fn="libxl_key_value_list_copy") 31libxl_hwcap = Builtin("hwcap", passby=PASS_BY_REFERENCE, json_parse_type="JSON_ARRAY", 32 check_default_fn="libxl__hwcap_is_default", copy_fn="libxl_hwcap_copy") 33libxl_ms_vm_genid = Builtin("ms_vm_genid", passby=PASS_BY_REFERENCE, check_default_fn="libxl_ms_vm_genid_is_zero", 34 copy_fn="libxl_ms_vm_genid_copy") 35 36# 37# Specific integer types 38# 39 40MemKB = UInt(64, init_val = "LIBXL_MEMKB_DEFAULT", json_gen_fn = "libxl__uint64_gen_json") 41 42# 43# Constants / Enumerations 44# 45 46libxl_error = Enumeration("error", [ 47 (-1, "NONSPECIFIC"), 48 (-2, "VERSION"), 49 (-3, "FAIL"), 50 (-4, "NI"), 51 (-5, "NOMEM"), 52 (-6, "INVAL"), 53 (-7, "BADFAIL"), 54 (-8, "GUEST_TIMEDOUT"), 55 (-9, "TIMEDOUT"), 56 (-10, "NOPARAVIRT"), 57 (-11, "NOT_READY"), 58 (-12, "OSEVENT_REG_FAIL"), 59 (-13, "BUFFERFULL"), 60 (-14, "UNKNOWN_CHILD"), 61 (-15, "LOCK_FAIL"), 62 (-16, "JSON_CONFIG_EMPTY"), 63 (-17, "DEVICE_EXISTS"), 64 (-18, "CHECKPOINT_DEVOPS_DOES_NOT_MATCH"), 65 (-19, "CHECKPOINT_DEVICE_NOT_SUPPORTED"), 66 (-20, "VNUMA_CONFIG_INVALID"), 67 (-21, "DOMAIN_NOTFOUND"), 68 (-22, "ABORTED"), 69 (-23, "NOTFOUND"), 70 (-24, "DOMAIN_DESTROYED"), # Target domain ceased to exist during op 71 (-25, "FEATURE_REMOVED"), # For functionality that has been removed 72 (-26, "PROTOCOL_ERROR_QMP"), 73 (-27, "UNKNOWN_QMP_ERROR"), 74 (-28, "QMP_GENERIC_ERROR"), # unspecified qmp error 75 (-29, "QMP_COMMAND_NOT_FOUND"), # the requested command has not been found 76 (-30, "QMP_DEVICE_NOT_ACTIVE"), # a device has failed to be become active 77 (-31, "QMP_DEVICE_NOT_FOUND"), # the requested device has not been found 78 (-32, "QEMU_API"), # QEMU's replies don't contains expected members 79 ], value_namespace = "") 80 81libxl_domain_type = Enumeration("domain_type", [ 82 (-1, "INVALID"), 83 (1, "HVM"), 84 (2, "PV"), 85 (3, "PVH"), 86 ], init_val = "LIBXL_DOMAIN_TYPE_INVALID") 87 88libxl_rdm_reserve_strategy = Enumeration("rdm_reserve_strategy", [ 89 (0, "ignore"), 90 (1, "host"), 91 ]) 92 93libxl_rdm_reserve_policy = Enumeration("rdm_reserve_policy", [ 94 (-1, "invalid"), 95 (0, "strict"), 96 (1, "relaxed"), 97 ], init_val = "LIBXL_RDM_RESERVE_POLICY_INVALID") 98 99libxl_channel_connection = Enumeration("channel_connection", [ 100 (0, "UNKNOWN"), 101 (1, "PTY"), 102 (2, "SOCKET"), # a listening Unix domain socket 103 ]) 104 105libxl_device_model_version = Enumeration("device_model_version", [ 106 (0, "UNKNOWN"), 107 (1, "QEMU_XEN_TRADITIONAL"), # Historical qemu-xen device model (qemu-dm) 108 (2, "QEMU_XEN"), # Upstream based qemu-xen device model 109 ]) 110 111libxl_console_type = Enumeration("console_type", [ 112 (0, "UNKNOWN"), 113 (1, "SERIAL"), 114 (2, "PV"), 115 (3, "VUART"), 116 ]) 117 118libxl_disk_format = Enumeration("disk_format", [ 119 (0, "UNKNOWN"), 120 (1, "QCOW"), 121 (2, "QCOW2"), 122 (3, "VHD"), 123 (4, "RAW"), 124 (5, "EMPTY"), 125 (6, "QED"), 126 ]) 127 128libxl_disk_backend = Enumeration("disk_backend", [ 129 (0, "UNKNOWN"), 130 (1, "PHY"), 131 (2, "TAP"), 132 (3, "QDISK"), 133 ]) 134 135libxl_nic_type = Enumeration("nic_type", [ 136 (0, "UNKNOWN"), 137 (1, "VIF_IOEMU"), 138 (2, "VIF"), 139 ]) 140 141libxl_action_on_shutdown = Enumeration("action_on_shutdown", [ 142 (1, "DESTROY"), 143 144 (2, "RESTART"), 145 (3, "RESTART_RENAME"), 146 147 (4, "PRESERVE"), 148 149 (5, "COREDUMP_DESTROY"), 150 (6, "COREDUMP_RESTART"), 151 152 (7, "SOFT_RESET"), 153 ], init_val = "LIBXL_ACTION_ON_SHUTDOWN_DESTROY") 154 155libxl_trigger = Enumeration("trigger", [ 156 (0, "UNKNOWN"), 157 (1, "POWER"), 158 (2, "SLEEP"), 159 (3, "NMI"), 160 (4, "INIT"), 161 (5, "RESET"), 162 (6, "S3RESUME"), 163 ]) 164 165libxl_tsc_mode = Enumeration("tsc_mode", [ 166 (0, "default"), 167 (1, "always_emulate"), 168 (2, "native"), 169 (3, "native_paravirt"), 170 ]) 171 172libxl_gfx_passthru_kind = Enumeration("gfx_passthru_kind", [ 173 (0, "default"), 174 (1, "igd"), 175 ]) 176 177# Consistent with the values defined for HVM_PARAM_TIMER_MODE. 178libxl_timer_mode = Enumeration("timer_mode", [ 179 (-1, "unknown"), 180 (0, "delay_for_missed_ticks"), 181 (1, "no_delay_for_missed_ticks"), 182 (2, "no_missed_ticks_pending"), 183 (3, "one_missed_tick_pending"), 184 ], init_val = "LIBXL_TIMER_MODE_DEFAULT", 185 check_default_fn = "libxl__timer_mode_is_default") 186 187libxl_bios_type = Enumeration("bios_type", [ 188 (0, "unknown"), 189 (1, "rombios"), 190 (2, "seabios"), 191 (3, "ovmf"), 192 ]) 193 194# Consistent with values defined in domctl.h 195# Except unknown which we have made up 196libxl_scheduler = Enumeration("scheduler", [ 197 (0, "unknown"), 198 (4, "sedf"), 199 (5, "credit"), 200 (6, "credit2"), 201 (7, "arinc653"), 202 (8, "rtds"), 203 (9, "null"), 204 ]) 205 206# Consistent with SHUTDOWN_* in sched.h (apart from UNKNOWN) 207libxl_shutdown_reason = Enumeration("shutdown_reason", [ 208 (-1, "unknown"), 209 (0, "poweroff"), 210 (1, "reboot"), 211 (2, "suspend"), 212 (3, "crash"), 213 (4, "watchdog"), 214 (5, "soft_reset"), 215 ], init_val = "LIBXL_SHUTDOWN_REASON_UNKNOWN") 216 217libxl_vga_interface_type = Enumeration("vga_interface_type", [ 218 (0, "UNKNOWN"), 219 (1, "CIRRUS"), 220 (2, "STD"), 221 (3, "NONE"), 222 (4, "QXL"), 223 ], init_val = "LIBXL_VGA_INTERFACE_TYPE_UNKNOWN") 224 225libxl_vendor_device = Enumeration("vendor_device", [ 226 (0, "NONE"), 227 (1, "XENSERVER"), 228 ]) 229 230libxl_viridian_enlightenment = Enumeration("viridian_enlightenment", [ 231 (0, "base"), 232 (1, "freq"), 233 (2, "time_ref_count"), 234 (3, "reference_tsc"), 235 (4, "hcall_remote_tlb_flush"), 236 (5, "apic_assist"), 237 (6, "crash_ctl"), 238 (7, "synic"), 239 (8, "stimer"), 240 (9, "hcall_ipi"), 241 ]) 242 243libxl_hdtype = Enumeration("hdtype", [ 244 (1, "IDE"), 245 (2, "AHCI"), 246 ], init_val = "LIBXL_HDTYPE_IDE") 247 248# Consistent with the values defined for migration_stream. 249libxl_checkpointed_stream = Enumeration("checkpointed_stream", [ 250 (0, "NONE"), 251 (1, "REMUS"), 252 (2, "COLO"), 253 ]) 254 255libxl_vuart_type = Enumeration("vuart_type", [ 256 (0, "unknown"), 257 (1, "sbsa_uart"), 258 ]) 259 260libxl_vkb_backend = Enumeration("vkb_backend", [ 261 (0, "UNKNOWN"), 262 (1, "QEMU"), 263 (2, "LINUX") 264 ]) 265 266libxl_passthrough = Enumeration("passthrough", [ 267 (0, "default"), 268 (1, "disabled"), 269 (2, "enabled"), # becomes {sync,share}_pt once defaults are evaluated 270 (3, "sync_pt"), 271 (4, "share_pt"), 272 ]) 273 274# 275# Complex libxl types 276# 277 278libxl_ioport_range = Struct("ioport_range", [ 279 ("first", uint32), 280 ("number", uint32), 281 ]) 282 283libxl_iomem_range = Struct("iomem_range", [ 284 # start host frame number to be mapped to the guest 285 ("start", uint64), 286 # number of frames to be mapped 287 ("number", uint64), 288 # guest frame number used as a start for the mapping 289 ("gfn", uint64, {'init_val': "LIBXL_INVALID_GFN"}), 290 ]) 291 292libxl_vga_interface_info = Struct("vga_interface_info", [ 293 ("kind", libxl_vga_interface_type), 294 ]) 295 296libxl_vnc_info = Struct("vnc_info", [ 297 ("enable", libxl_defbool), 298 # "address:port" that should be listened on 299 ("listen", string), 300 ("passwd", string), 301 ("display", integer), 302 # If set then try to find an unused port 303 ("findunused", libxl_defbool), 304 ]) 305 306libxl_spice_info = Struct("spice_info", [ 307 ("enable", libxl_defbool), 308 # At least one of spice port or spicetls_post must be given 309 ("port", integer), 310 ("tls_port", integer), 311 # Interface to bind to 312 ("host", string), 313 # enable client connection with no password 314 ("disable_ticketing", libxl_defbool), 315 ("passwd", string), 316 ("agent_mouse", libxl_defbool), 317 ("vdagent", libxl_defbool), 318 ("clipboard_sharing", libxl_defbool), 319 ("usbredirection", integer), 320 ("image_compression", string), 321 ("streaming_video", string), 322 ]) 323 324libxl_sdl_info = Struct("sdl_info", [ 325 ("enable", libxl_defbool), 326 ("opengl", libxl_defbool), 327 ("display", string), 328 ("xauthority", string), 329 ]) 330 331libxl_dominfo = Struct("dominfo",[ 332 ("uuid", libxl_uuid), 333 ("domid", libxl_domid), 334 ("ssidref", uint32), 335 ("ssid_label", string), 336 ("running", bool), 337 ("blocked", bool), 338 ("paused", bool), 339 ("shutdown", bool), 340 ("dying", bool), 341 ("never_stop", bool), 342 343 # Valid iff ->shutdown is true. 344 # 345 # Otherwise set to a value guaranteed not to clash with any valid 346 # LIBXL_SHUTDOWN_REASON_* constant. 347 ("shutdown_reason", libxl_shutdown_reason), 348 ("outstanding_memkb", MemKB), 349 ("current_memkb", MemKB), 350 ("shared_memkb", MemKB), 351 ("paged_memkb", MemKB), 352 ("max_memkb", MemKB), 353 ("cpu_time", uint64), 354 ("vcpu_max_id", uint32), 355 ("vcpu_online", uint32), 356 ("cpupool", uint32), 357 ("domain_type", libxl_domain_type), 358 ], dir=DIR_OUT) 359 360libxl_cpupoolinfo = Struct("cpupoolinfo", [ 361 ("poolid", uint32), 362 ("pool_name", string), 363 ("sched", libxl_scheduler), 364 ("n_dom", uint32), 365 ("cpumap", libxl_bitmap) 366 ], dir=DIR_OUT) 367 368libxl_channelinfo = Struct("channelinfo", [ 369 ("backend", string), 370 ("backend_id", uint32), 371 ("frontend", string), 372 ("frontend_id", uint32), 373 ("devid", libxl_devid), 374 ("state", integer), 375 ("evtch", integer), 376 ("rref", integer), 377 ("u", KeyedUnion(None, libxl_channel_connection, "connection", 378 [("unknown", None), 379 ("pty", Struct(None, [("path", string),])), 380 ("socket", None), 381 ])), 382 ], dir=DIR_OUT) 383 384libxl_vminfo = Struct("vminfo", [ 385 ("uuid", libxl_uuid), 386 ("domid", libxl_domid), 387 ], dir=DIR_OUT) 388 389libxl_version_info = Struct("version_info", [ 390 ("xen_version_major", integer), 391 ("xen_version_minor", integer), 392 ("xen_version_extra", string), 393 ("compiler", string), 394 ("compile_by", string), 395 ("compile_domain", string), 396 ("compile_date", string), 397 ("capabilities", string), 398 ("changeset", string), 399 ("virt_start", uint64), 400 ("pagesize", integer), 401 ("commandline", string), 402 ("build_id", string), 403 ], dir=DIR_OUT) 404 405libxl_domain_create_info = Struct("domain_create_info",[ 406 ("type", libxl_domain_type), 407 ("hap", libxl_defbool), 408 ("oos", libxl_defbool), 409 ("ssidref", uint32), 410 ("ssid_label", string), 411 ("name", string), 412 ("domid", libxl_domid), 413 ("uuid", libxl_uuid), 414 ("xsdata", libxl_key_value_list), 415 ("platformdata", libxl_key_value_list), 416 ("poolid", uint32), 417 ("pool_name", string), 418 ("run_hotplug_scripts",libxl_defbool), 419 ("driver_domain",libxl_defbool), 420 ("passthrough", libxl_passthrough), 421 ("xend_suspend_evtchn_compat",libxl_defbool), 422 ], dir=DIR_IN) 423 424libxl_domain_restore_params = Struct("domain_restore_params", [ 425 ("checkpointed_stream", integer), 426 ("stream_version", uint32, {'init_val': '1'}), 427 ("colo_proxy_script", string), 428 ("userspace_colo_proxy", libxl_defbool), 429 ]) 430 431libxl_sched_params = Struct("sched_params",[ 432 ("vcpuid", integer, {'init_val': 'LIBXL_SCHED_PARAM_VCPU_INDEX_DEFAULT'}), 433 ("weight", integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_WEIGHT_DEFAULT'}), 434 ("cap", integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_CAP_DEFAULT'}), 435 ("period", integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_PERIOD_DEFAULT'}), 436 ("extratime", integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_EXTRATIME_DEFAULT'}), 437 ("budget", integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_BUDGET_DEFAULT'}), 438 ]) 439 440libxl_vcpu_sched_params = Struct("vcpu_sched_params",[ 441 ("sched", libxl_scheduler), 442 ("vcpus", Array(libxl_sched_params, "num_vcpus")), 443 ]) 444 445libxl_domain_sched_params = Struct("domain_sched_params",[ 446 ("sched", libxl_scheduler), 447 ("weight", integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_WEIGHT_DEFAULT'}), 448 ("cap", integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_CAP_DEFAULT'}), 449 ("period", integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_PERIOD_DEFAULT'}), 450 ("budget", integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_BUDGET_DEFAULT'}), 451 ("extratime", integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_EXTRATIME_DEFAULT'}), 452 453 # The following three parameters ('slice' and 'latency') are deprecated, 454 # and will have no effect if used, since the SEDF scheduler has been removed. 455 # Note that 'period' and 'extratime' was an SDF parameter too, but it is still effective 456 # as they are now used (together with 'budget') by the RTDS scheduler. 457 ("slice", integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_SLICE_DEFAULT'}), 458 ("latency", integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_LATENCY_DEFAULT'}), 459 ]) 460 461libxl_vnode_info = Struct("vnode_info", [ 462 ("memkb", MemKB), 463 ("distances", Array(uint32, "num_distances")), # distances from this node to other nodes 464 ("pnode", uint32), # physical node of this node 465 ("vcpus", libxl_bitmap), # vcpus in this node 466 ]) 467 468libxl_gic_version = Enumeration("gic_version", [ 469 (0, "DEFAULT"), 470 (0x20, "v2"), 471 (0x30, "v3") 472 ], init_val = "LIBXL_GIC_VERSION_DEFAULT") 473 474libxl_tee_type = Enumeration("tee_type", [ 475 (0, "none"), 476 (1, "optee") 477 ], init_val = "LIBXL_TEE_TYPE_NONE") 478 479libxl_rdm_reserve = Struct("rdm_reserve", [ 480 ("strategy", libxl_rdm_reserve_strategy), 481 ("policy", libxl_rdm_reserve_policy), 482 ]) 483 484# Consistent with the values defined for HVM_PARAM_ALTP2M 485libxl_altp2m_mode = Enumeration("altp2m_mode", [ 486 (0, "disabled"), 487 (1, "mixed"), 488 (2, "external"), 489 (3, "limited"), 490 ], init_val = "LIBXL_ALTP2M_MODE_DISABLED") 491 492libxl_domain_build_info = Struct("domain_build_info",[ 493 ("max_vcpus", integer), 494 ("avail_vcpus", libxl_bitmap), 495 ("cpumap", libxl_bitmap), 496 ("nodemap", libxl_bitmap), 497 ("vcpu_hard_affinity", Array(libxl_bitmap, "num_vcpu_hard_affinity")), 498 ("vcpu_soft_affinity", Array(libxl_bitmap, "num_vcpu_soft_affinity")), 499 ("numa_placement", libxl_defbool), 500 ("tsc_mode", libxl_tsc_mode), 501 ("max_memkb", MemKB), 502 ("target_memkb", MemKB), 503 ("video_memkb", MemKB), 504 ("shadow_memkb", MemKB), 505 ("iommu_memkb", MemKB), 506 ("rtc_timeoffset", uint32), 507 ("exec_ssidref", uint32), 508 ("exec_ssid_label", string), 509 ("localtime", libxl_defbool), 510 ("disable_migrate", libxl_defbool), 511 ("cpuid", libxl_cpuid_policy_list), 512 ("blkdev_start", string), 513 514 ("vnuma_nodes", Array(libxl_vnode_info, "num_vnuma_nodes")), 515 516 ("max_grant_frames", uint32, {'init_val': 'LIBXL_MAX_GRANT_DEFAULT'}), 517 ("max_maptrack_frames", uint32, {'init_val': 'LIBXL_MAX_GRANT_DEFAULT'}), 518 519 ("device_model_version", libxl_device_model_version), 520 ("device_model_stubdomain", libxl_defbool), 521 ("stubdomain_memkb", MemKB), 522 ("stubdomain_kernel", string), 523 ("stubdomain_ramdisk", string), 524 # if you set device_model you must set device_model_version too 525 ("device_model", string), 526 ("device_model_ssidref", uint32), 527 ("device_model_ssid_label", string), 528 ("device_model_user", string), 529 530 # extra parameters pass directly to qemu, NULL terminated 531 ("extra", libxl_string_list), 532 # extra parameters pass directly to qemu for PV guest, NULL terminated 533 ("extra_pv", libxl_string_list), 534 # extra parameters pass directly to qemu for HVM guest, NULL terminated 535 ("extra_hvm", libxl_string_list), 536 # parameters for all type of scheduler 537 ("sched_params", libxl_domain_sched_params), 538 539 ("ioports", Array(libxl_ioport_range, "num_ioports")), 540 ("irqs", Array(uint32, "num_irqs")), 541 ("iomem", Array(libxl_iomem_range, "num_iomem")), 542 ("claim_mode", libxl_defbool), 543 ("event_channels", uint32), 544 ("kernel", string), 545 ("cmdline", string), 546 ("ramdisk", string), 547 # Given the complexity of verifying the validity of a device tree, 548 # libxl doesn't do any security check on it. It's the responsibility 549 # of the caller to provide only trusted device tree. 550 # Note that the partial device tree should avoid to use the phandle 551 # 65000 which is reserved by the toolstack. 552 ("device_tree", string), 553 ("acpi", libxl_defbool), 554 ("bootloader", string), 555 ("bootloader_args", libxl_string_list), 556 ("timer_mode", libxl_timer_mode), 557 ("nested_hvm", libxl_defbool), 558 ("apic", libxl_defbool), 559 ("dm_restrict", libxl_defbool), 560 ("tee", libxl_tee_type), 561 ("u", KeyedUnion(None, libxl_domain_type, "type", 562 [("hvm", Struct(None, [("firmware", string), 563 ("bios", libxl_bios_type), 564 ("pae", libxl_defbool), 565 ("apic", libxl_defbool, {'deprecated_by': 'apic'}), 566 # The following acpi field is deprecated. 567 # Please use the unified acpi field above 568 # which works for both x86 and ARM. 569 ("acpi", libxl_defbool), 570 ("acpi_s3", libxl_defbool), 571 ("acpi_s4", libxl_defbool), 572 ("acpi_laptop_slate",libxl_defbool), 573 ("nx", libxl_defbool), 574 ("viridian", libxl_defbool), 575 ("viridian_enable", libxl_bitmap), 576 ("viridian_disable", libxl_bitmap), 577 ("timeoffset", string), 578 ("hpet", libxl_defbool), 579 ("vpt_align", libxl_defbool), 580 ("mmio_hole_memkb", MemKB), 581 ("timer_mode", libxl_timer_mode, {'deprecated_by': 'timer_mode'}), 582 ("nested_hvm", libxl_defbool, {'deprecated_by': 'nested_hvm'}), 583 # The u.hvm.altp2m field is used solely 584 # for x86 HVM guests and is maintained 585 # for legacy purposes. 586 ("altp2m", libxl_defbool), 587 ("system_firmware", string), 588 ("smbios_firmware", string), 589 ("acpi_firmware", string), 590 ("hdtype", libxl_hdtype), 591 ("nographic", libxl_defbool), 592 ("vga", libxl_vga_interface_info), 593 ("vnc", libxl_vnc_info), 594 # keyboard layout, default is en-us keyboard 595 ("keymap", string), 596 ("sdl", libxl_sdl_info), 597 ("spice", libxl_spice_info), 598 599 ("gfx_passthru", libxl_defbool), 600 ("gfx_passthru_kind", libxl_gfx_passthru_kind), 601 602 ("serial", string), 603 ("boot", string), 604 ("usb", libxl_defbool), 605 ("usbversion", integer), 606 # usbdevice: 607 # - "tablet" for absolute mouse, 608 # - "mouse" for PS/2 protocol relative mouse 609 ("usbdevice", string), 610 ("vkb_device", libxl_defbool), 611 ("soundhw", string), 612 ("xen_platform_pci", libxl_defbool), 613 ("usbdevice_list", libxl_string_list), 614 ("vendor_device", libxl_vendor_device), 615 # See libxl_ms_vm_genid_generate() 616 ("ms_vm_genid", libxl_ms_vm_genid), 617 ("serial_list", libxl_string_list), 618 ("rdm", libxl_rdm_reserve), 619 ("rdm_mem_boundary_memkb", MemKB), 620 ("mca_caps", uint64), 621 ])), 622 ("pv", Struct(None, [("kernel", string, {'deprecated_by': 'kernel'}), 623 ("slack_memkb", MemKB), 624 ("bootloader", string, {'deprecated_by': 'bootloader'}), 625 ("bootloader_args", libxl_string_list, {'deprecated_by': 'bootloader_args'}), 626 ("cmdline", string, {'deprecated_by': 'cmdline'}), 627 ("ramdisk", string, {'deprecated_by': 'ramdisk'}), 628 ("features", string, {'const': True}), 629 # Use host's E820 for PCI passthrough. 630 ("e820_host", libxl_defbool), 631 ])), 632 ("pvh", Struct(None, [("pvshim", libxl_defbool), 633 ("pvshim_path", string), 634 ("pvshim_cmdline", string), 635 ("pvshim_extra", string), # eg "loglvl=all guest_loglvl=all apic_verbosity=debug e820-verbose" 636 ])), 637 ("invalid", None), 638 ], keyvar_init_val = "LIBXL_DOMAIN_TYPE_INVALID")), 639 640 641 ("arch_arm", Struct(None, [("gic_version", libxl_gic_version), 642 ("vuart", libxl_vuart_type), 643 ])), 644 # Alternate p2m is not bound to any architecture or guest type, as it is 645 # supported by x86 HVM and ARM support is planned. 646 ("altp2m", libxl_altp2m_mode), 647 648 ], dir=DIR_IN, 649 copy_deprecated_fn="libxl__domain_build_info_copy_deprecated", 650) 651 652libxl_device_vfb = Struct("device_vfb", [ 653 ("backend_domid", libxl_domid), 654 ("backend_domname",string), 655 ("devid", libxl_devid), 656 ("vnc", libxl_vnc_info), 657 ("sdl", libxl_sdl_info), 658 # set keyboard layout, default is en-us keyboard 659 ("keymap", string), 660 ]) 661 662libxl_device_vkb = Struct("device_vkb", [ 663 ("backend_domid", libxl_domid), 664 ("backend_domname", string), 665 ("devid", libxl_devid), 666 ("backend_type", libxl_vkb_backend), 667 ("unique_id", string), 668 ("feature_disable_keyboard", bool), 669 ("feature_disable_pointer", bool), 670 ("feature_abs_pointer", bool), 671 ("feature_raw_pointer", bool), 672 ("feature_multi_touch", bool), 673 ("width", uint32), 674 ("height", uint32), 675 ("multi_touch_width", uint32), 676 ("multi_touch_height", uint32), 677 ("multi_touch_num_contacts", uint32) 678 ]) 679 680libxl_device_disk = Struct("device_disk", [ 681 ("backend_domid", libxl_domid), 682 ("backend_domname", string), 683 ("pdev_path", string), 684 ("vdev", string), 685 ("backend", libxl_disk_backend), 686 ("format", libxl_disk_format), 687 ("script", string), 688 ("removable", integer), 689 ("readwrite", integer), 690 ("is_cdrom", integer), 691 ("direct_io_safe", bool), 692 ("discard_enable", libxl_defbool), 693 # Note that the COLO configuration settings should be considered unstable. 694 # They may change incompatibly in future versions of Xen. 695 ("colo_enable", libxl_defbool), 696 ("colo_restore_enable", libxl_defbool), 697 ("colo_host", string), 698 ("colo_port", integer), 699 ("colo_export", string), 700 ("active_disk", string), 701 ("hidden_disk", string) 702 ]) 703 704libxl_device_nic = Struct("device_nic", [ 705 ("backend_domid", libxl_domid), 706 ("backend_domname", string), 707 ("devid", libxl_devid), 708 ("mtu", integer), 709 ("model", string), 710 ("mac", libxl_mac), 711 ("ip", string), 712 ("bridge", string), 713 ("ifname", string), 714 ("script", string), 715 ("nictype", libxl_nic_type), 716 ("rate_bytes_per_interval", uint64), 717 ("rate_interval_usecs", uint32), 718 ("gatewaydev", string), 719 # Note that the COLO configuration settings should be considered unstable. 720 # They may change incompatibly in future versions of Xen. 721 ("coloft_forwarddev", string), 722 ("colo_sock_mirror_id", string), 723 ("colo_sock_mirror_ip", string), 724 ("colo_sock_mirror_port", string), 725 ("colo_sock_compare_pri_in_id", string), 726 ("colo_sock_compare_pri_in_ip", string), 727 ("colo_sock_compare_pri_in_port", string), 728 ("colo_sock_compare_sec_in_id", string), 729 ("colo_sock_compare_sec_in_ip", string), 730 ("colo_sock_compare_sec_in_port", string), 731 ("colo_sock_compare_notify_id", string), 732 ("colo_sock_compare_notify_ip", string), 733 ("colo_sock_compare_notify_port", string), 734 ("colo_sock_redirector0_id", string), 735 ("colo_sock_redirector0_ip", string), 736 ("colo_sock_redirector0_port", string), 737 ("colo_sock_redirector1_id", string), 738 ("colo_sock_redirector1_ip", string), 739 ("colo_sock_redirector1_port", string), 740 ("colo_sock_redirector2_id", string), 741 ("colo_sock_redirector2_ip", string), 742 ("colo_sock_redirector2_port", string), 743 ("colo_filter_mirror_queue", string), 744 ("colo_filter_mirror_outdev", string), 745 ("colo_filter_redirector0_queue", string), 746 ("colo_filter_redirector0_indev", string), 747 ("colo_filter_redirector0_outdev", string), 748 ("colo_filter_redirector1_queue", string), 749 ("colo_filter_redirector1_indev", string), 750 ("colo_filter_redirector1_outdev", string), 751 ("colo_compare_pri_in", string), 752 ("colo_compare_sec_in", string), 753 ("colo_compare_out", string), 754 ("colo_compare_notify_dev", string), 755 ("colo_sock_sec_redirector0_id", string), 756 ("colo_sock_sec_redirector0_ip", string), 757 ("colo_sock_sec_redirector0_port", string), 758 ("colo_sock_sec_redirector1_id", string), 759 ("colo_sock_sec_redirector1_ip", string), 760 ("colo_sock_sec_redirector1_port", string), 761 ("colo_filter_sec_redirector0_queue", string), 762 ("colo_filter_sec_redirector0_indev", string), 763 ("colo_filter_sec_redirector0_outdev", string), 764 ("colo_filter_sec_redirector1_queue", string), 765 ("colo_filter_sec_redirector1_indev", string), 766 ("colo_filter_sec_redirector1_outdev", string), 767 ("colo_filter_sec_rewriter0_queue", string), 768 ("colo_checkpoint_host", string), 769 ("colo_checkpoint_port", string) 770 ]) 771 772libxl_device_pci = Struct("device_pci", [ 773 ("func", uint8), 774 ("dev", uint8), 775 ("bus", uint8), 776 ("domain", integer), 777 ("vdevfn", uint32), 778 ("vfunc_mask", uint32), 779 ("msitranslate", bool), 780 ("power_mgmt", bool), 781 ("permissive", bool), 782 ("seize", bool), 783 ("rdm_policy", libxl_rdm_reserve_policy), 784 ]) 785 786libxl_device_rdm = Struct("device_rdm", [ 787 ("start", uint64), 788 ("size", uint64), 789 ("policy", libxl_rdm_reserve_policy), 790 ]) 791 792libxl_usbctrl_type = Enumeration("usbctrl_type", [ 793 (0, "AUTO"), 794 (1, "PV"), 795 (2, "DEVICEMODEL"), 796 (3, "QUSB"), 797 ]) 798 799libxl_usbdev_type = Enumeration("usbdev_type", [ 800 (1, "hostdev"), 801 ]) 802 803libxl_device_usbctrl = Struct("device_usbctrl", [ 804 ("type", libxl_usbctrl_type), 805 ("devid", libxl_devid), 806 ("version", integer), 807 ("ports", integer), 808 ("backend_domid", libxl_domid), 809 ("backend_domname", string), 810 ]) 811 812libxl_device_usbdev = Struct("device_usbdev", [ 813 ("ctrl", libxl_devid), 814 ("port", integer), 815 ("u", KeyedUnion(None, libxl_usbdev_type, "type", 816 [("hostdev", Struct(None, [ 817 ("hostbus", uint8), 818 ("hostaddr", uint8)])), 819 ])), 820 ]) 821 822libxl_device_dtdev = Struct("device_dtdev", [ 823 ("path", string), 824 ]) 825 826libxl_device_vtpm = Struct("device_vtpm", [ 827 ("backend_domid", libxl_domid), 828 ("backend_domname", string), 829 ("devid", libxl_devid), 830 ("uuid", libxl_uuid), 831]) 832 833libxl_device_p9 = Struct("device_p9", [ 834 ("backend_domid", libxl_domid), 835 ("backend_domname", string), 836 ("tag", string), 837 ("path", string), 838 ("security_model", string), 839 ("devid", libxl_devid), 840]) 841 842libxl_device_pvcallsif = Struct("device_pvcallsif", [ 843 ("backend_domid", libxl_domid), 844 ("backend_domname", string), 845 ("devid", libxl_devid), 846]) 847 848libxl_device_channel = Struct("device_channel", [ 849 ("backend_domid", libxl_domid), 850 ("backend_domname", string), 851 ("devid", libxl_devid), 852 ("name", string), 853 ("u", KeyedUnion(None, libxl_channel_connection, "connection", 854 [("unknown", None), 855 ("pty", None), 856 ("socket", Struct(None, [("path", string)])), 857 ])), 858]) 859 860libxl_connector_param = Struct("connector_param", [ 861 ("unique_id", string), 862 ("width", uint32), 863 ("height", uint32) 864 ]) 865 866libxl_device_vdispl = Struct("device_vdispl", [ 867 ("backend_domid", libxl_domid), 868 ("backend_domname", string), 869 ("devid", libxl_devid), 870 ("be_alloc", bool), 871 ("connectors", Array(libxl_connector_param, "num_connectors")) 872 ]) 873 874libxl_vsnd_pcm_format = Enumeration("vsnd_pcm_format", [ 875 (1, "S8"), 876 (2, "U8"), 877 (3, "S16_LE"), 878 (4, "S16_BE"), 879 (5, "U16_LE"), 880 (6, "U16_BE"), 881 (7, "S24_LE"), 882 (8, "S24_BE"), 883 (9, "U24_LE"), 884 (10, "U24_BE"), 885 (11, "S32_LE"), 886 (12, "S32_BE"), 887 (13, "U32_LE"), 888 (14, "U32_BE"), 889 (15, "F32_LE"), 890 (16, "F32_BE"), 891 (17, "F64_LE"), 892 (18, "F64_BE"), 893 (19, "IEC958_SUBFRAME_LE"), 894 (20, "IEC958_SUBFRAME_BE"), 895 (21, "MU_LAW"), 896 (22, "A_LAW"), 897 (23, "IMA_ADPCM"), 898 (24, "MPEG"), 899 (25, "GSM") 900 ]) 901 902libxl_vsnd_params = Struct("vsnd_params", [ 903 ("sample_rates", Array(uint32, "num_sample_rates")), 904 ("sample_formats", Array(libxl_vsnd_pcm_format, "num_sample_formats")), 905 ("channels_min", uint32), 906 ("channels_max", uint32), 907 ("buffer_size", uint32) 908 ]) 909 910libxl_vsnd_stream_type = Enumeration("vsnd_stream_type", [ 911 (1, "P"), 912 (2, "C") 913 ]) 914 915libxl_vsnd_stream = Struct("vsnd_stream", [ 916 ("unique_id", string), 917 ("type", libxl_vsnd_stream_type), 918 ("params", libxl_vsnd_params) 919 ]) 920 921libxl_vsnd_pcm = Struct("vsnd_pcm", [ 922 ("name", string), 923 ("params", libxl_vsnd_params), 924 ("streams", Array(libxl_vsnd_stream, "num_vsnd_streams")) 925 ]) 926 927libxl_device_vsnd = Struct("device_vsnd", [ 928 ("backend_domid", libxl_domid), 929 ("backend_domname", string), 930 ("devid", libxl_devid), 931 ("short_name", string), 932 ("long_name", string), 933 ("params", libxl_vsnd_params), 934 ("pcms", Array(libxl_vsnd_pcm, "num_vsnd_pcms")) 935 ]) 936 937libxl_domain_config = Struct("domain_config", [ 938 ("c_info", libxl_domain_create_info), 939 ("b_info", libxl_domain_build_info), 940 941 ("disks", Array(libxl_device_disk, "num_disks")), 942 ("nics", Array(libxl_device_nic, "num_nics")), 943 ("pcidevs", Array(libxl_device_pci, "num_pcidevs")), 944 ("rdms", Array(libxl_device_rdm, "num_rdms")), 945 ("dtdevs", Array(libxl_device_dtdev, "num_dtdevs")), 946 ("vfbs", Array(libxl_device_vfb, "num_vfbs")), 947 ("vkbs", Array(libxl_device_vkb, "num_vkbs")), 948 ("vtpms", Array(libxl_device_vtpm, "num_vtpms")), 949 ("p9s", Array(libxl_device_p9, "num_p9s")), 950 ("pvcallsifs", Array(libxl_device_pvcallsif, "num_pvcallsifs")), 951 ("vdispls", Array(libxl_device_vdispl, "num_vdispls")), 952 ("vsnds", Array(libxl_device_vsnd, "num_vsnds")), 953 # a channel manifests as a console with a name, 954 # see docs/misc/channels.txt 955 ("channels", Array(libxl_device_channel, "num_channels")), 956 ("usbctrls", Array(libxl_device_usbctrl, "num_usbctrls")), 957 ("usbdevs", Array(libxl_device_usbdev, "num_usbdevs")), 958 959 ("on_poweroff", libxl_action_on_shutdown), 960 ("on_reboot", libxl_action_on_shutdown), 961 ("on_watchdog", libxl_action_on_shutdown), 962 ("on_crash", libxl_action_on_shutdown), 963 ("on_soft_reset", libxl_action_on_shutdown), 964 ], dir=DIR_IN) 965 966libxl_diskinfo = Struct("diskinfo", [ 967 ("backend", string), 968 ("backend_id", uint32), 969 ("frontend", string), 970 ("frontend_id", uint32), 971 ("devid", libxl_devid), 972 ("state", integer), 973 ("evtch", integer), 974 ("rref", integer), 975 ], dir=DIR_OUT) 976 977libxl_nicinfo = Struct("nicinfo", [ 978 ("backend", string), 979 ("backend_id", uint32), 980 ("frontend", string), 981 ("frontend_id", uint32), 982 ("devid", libxl_devid), 983 ("state", integer), 984 ("evtch", integer), 985 ("rref_tx", integer), 986 ("rref_rx", integer), 987 ], dir=DIR_OUT) 988 989libxl_vtpminfo = Struct("vtpminfo", [ 990 ("backend", string), 991 ("backend_id", uint32), 992 ("frontend", string), 993 ("frontend_id", uint32), 994 ("devid", libxl_devid), 995 ("state", integer), 996 ("evtch", integer), 997 ("rref", integer), 998 ("uuid", libxl_uuid), 999 ], dir=DIR_OUT) 1000 1001libxl_usbctrlinfo = Struct("usbctrlinfo", [ 1002 ("type", libxl_usbctrl_type), 1003 ("devid", libxl_devid), 1004 ("version", integer), 1005 ("ports", integer), 1006 ("backend", string), 1007 ("backend_id", uint32), 1008 ("frontend", string), 1009 ("frontend_id", uint32), 1010 ("state", integer), 1011 ("evtch", integer), 1012 ("ref_urb", integer), 1013 ("ref_conn", integer), 1014 ], dir=DIR_OUT) 1015 1016libxl_vcpuinfo = Struct("vcpuinfo", [ 1017 ("vcpuid", uint32), 1018 ("cpu", uint32), 1019 ("online", bool), 1020 ("blocked", bool), 1021 ("running", bool), 1022 ("vcpu_time", uint64), # total vcpu time ran (ns) 1023 ("cpumap", libxl_bitmap), # current hard cpu affinity 1024 ("cpumap_soft", libxl_bitmap), # current soft cpu affinity 1025 ], dir=DIR_OUT) 1026 1027libxl_physinfo = Struct("physinfo", [ 1028 ("threads_per_core", uint32), 1029 ("cores_per_socket", uint32), 1030 1031 ("max_cpu_id", uint32), 1032 ("nr_cpus", uint32), 1033 ("cpu_khz", uint32), 1034 1035 ("total_pages", uint64), 1036 ("free_pages", uint64), 1037 ("scrub_pages", uint64), 1038 ("outstanding_pages", uint64), 1039 ("sharing_freed_pages", uint64), 1040 ("sharing_used_frames", uint64), 1041 ("max_possible_mfn", uint64), 1042 1043 ("nr_nodes", uint32), 1044 ("hw_cap", libxl_hwcap), 1045 1046 ("cap_hvm", bool), 1047 ("cap_pv", bool), 1048 ("cap_hvm_directio", bool), # No longer HVM specific 1049 ("cap_hap", bool), 1050 ("cap_shadow", bool), 1051 ("cap_iommu_hap_pt_share", bool), 1052 ], dir=DIR_OUT) 1053 1054libxl_connectorinfo = Struct("connectorinfo", [ 1055 ("unique_id", string), 1056 ("width", uint32), 1057 ("height", uint32), 1058 ("req_evtch", integer), 1059 ("req_rref", integer), 1060 ("evt_evtch", integer), 1061 ("evt_rref", integer), 1062 ], dir=DIR_OUT) 1063 1064libxl_vdisplinfo = Struct("vdisplinfo", [ 1065 ("backend", string), 1066 ("backend_id", uint32), 1067 ("frontend", string), 1068 ("frontend_id", uint32), 1069 ("devid", libxl_devid), 1070 ("state", integer), 1071 ("be_alloc", bool), 1072 ("connectors", Array(libxl_connectorinfo, "num_connectors")) 1073 ], dir=DIR_OUT) 1074 1075libxl_streaminfo = Struct("streaminfo", [ 1076 ("req_evtch", integer), 1077 ("req_rref", integer) 1078 ]) 1079 1080libxl_pcminfo = Struct("pcminfo", [ 1081 ("streams", Array(libxl_streaminfo, "num_vsnd_streams")) 1082 ]) 1083 1084libxl_vsndinfo = Struct("vsndinfo", [ 1085 ("backend", string), 1086 ("backend_id", uint32), 1087 ("frontend", string), 1088 ("frontend_id", uint32), 1089 ("devid", libxl_devid), 1090 ("state", integer), 1091 ("pcms", Array(libxl_pcminfo, "num_vsnd_pcms")) 1092 ]) 1093 1094libxl_vkbinfo = Struct("vkbinfo", [ 1095 ("backend", string), 1096 ("backend_id", uint32), 1097 ("frontend", string), 1098 ("frontend_id", uint32), 1099 ("devid", libxl_devid), 1100 ("state", integer), 1101 ("evtch", integer), 1102 ("rref", integer) 1103 ], dir=DIR_OUT) 1104 1105# NUMA node characteristics: size and free are how much memory it has, and how 1106# much of it is free, respectively. dists is an array of distances from this 1107# node to each other node. 1108libxl_numainfo = Struct("numainfo", [ 1109 ("size", uint64), 1110 ("free", uint64), 1111 ("dists", Array(uint32, "num_dists")), 1112 ], dir=DIR_OUT) 1113 1114libxl_cputopology = Struct("cputopology", [ 1115 ("core", uint32), 1116 ("socket", uint32), 1117 ("node", uint32), 1118 ], dir=DIR_OUT) 1119 1120libxl_pcitopology = Struct("pcitopology", [ 1121 ("seg", uint16), 1122 ("bus", uint8), 1123 ("devfn", uint8), 1124 ("node", uint32), 1125 ], dir=DIR_OUT) 1126 1127libxl_sched_credit_params = Struct("sched_credit_params", [ 1128 ("tslice_ms", integer), 1129 ("ratelimit_us", integer), 1130 ("vcpu_migr_delay_us", integer), 1131 ], dispose_fn=None) 1132 1133libxl_sched_credit2_params = Struct("sched_credit2_params", [ 1134 ("ratelimit_us", integer), 1135 ], dispose_fn=None) 1136 1137libxl_domain_remus_info = Struct("domain_remus_info",[ 1138 ("interval", integer), 1139 ("allow_unsafe", libxl_defbool), 1140 ("blackhole", libxl_defbool), 1141 ("compression", libxl_defbool), 1142 ("netbuf", libxl_defbool), 1143 ("netbufscript", string), 1144 ("diskbuf", libxl_defbool), 1145 ("colo", libxl_defbool), 1146 ("userspace_colo_proxy", libxl_defbool) 1147 ]) 1148 1149libxl_event_type = Enumeration("event_type", [ 1150 (1, "DOMAIN_SHUTDOWN"), 1151 (2, "DOMAIN_DEATH"), 1152 (3, "DISK_EJECT"), 1153 (4, "OPERATION_COMPLETE"), 1154 (5, "DOMAIN_CREATE_CONSOLE_AVAILABLE"), 1155 ]) 1156 1157libxl_ev_user = UInt(64) 1158 1159libxl_ev_link = Builtin("ev_link", json_parse_type="JSON_STRING", passby=PASS_BY_REFERENCE, private=True) 1160 1161libxl_event = Struct("event",[ 1162 ("link", libxl_ev_link), 1163 # for use by libxl; caller may use this once the event has been 1164 # returned by libxl_event_{check,wait} 1165 ("domid", libxl_domid), 1166 ("domuuid", libxl_uuid), 1167 ("for_user", libxl_ev_user), 1168 ("u", KeyedUnion(None, libxl_event_type, "type", 1169 [("domain_shutdown", Struct(None, [ 1170 ("shutdown_reason", uint8), 1171 ])), 1172 ("domain_death", None), 1173 ("disk_eject", Struct(None, [ 1174 ("vdev", string), 1175 ("disk", libxl_device_disk), 1176 ])), 1177 ("operation_complete", Struct(None, [ 1178 ("rc", integer), 1179 ])), 1180 ("domain_create_console_available", None), 1181 ]))]) 1182 1183libxl_psr_cmt_type = Enumeration("psr_cmt_type", [ 1184 (1, "CACHE_OCCUPANCY"), 1185 (2, "TOTAL_MEM_COUNT"), 1186 (3, "LOCAL_MEM_COUNT"), 1187 ]) 1188 1189libxl_psr_cbm_type = Enumeration("psr_cbm_type", [ 1190 (0, "UNKNOWN"), 1191 (1, "L3_CBM"), 1192 (2, "L3_CBM_CODE"), 1193 (3, "L3_CBM_DATA"), 1194 (4, "L2_CBM"), 1195 (5, "MBA_THRTL"), 1196 ]) 1197 1198libxl_psr_cat_info = Struct("psr_cat_info", [ 1199 ("id", uint32), 1200 ("cos_max", uint32), 1201 ("cbm_len", uint32), 1202 ("cdp_enabled", bool), 1203 ]) 1204 1205libxl_psr_feat_type = Enumeration("psr_feat_type", [ 1206 (1, "CAT"), 1207 (2, "MBA"), 1208 ]) 1209 1210libxl_psr_hw_info = Struct("psr_hw_info", [ 1211 ("id", uint32), 1212 ("u", KeyedUnion(None, libxl_psr_feat_type, "type", 1213 [("cat", Struct(None, [ 1214 ("cos_max", uint32), 1215 ("cbm_len", uint32), 1216 ("cdp_enabled", bool), 1217 ])), 1218 ("mba", Struct(None, [ 1219 ("cos_max", uint32), 1220 ("thrtl_max", uint32), 1221 ("linear", bool), 1222 ])), 1223 ])) 1224 ], dir=DIR_OUT) 1225